例说FPGA:可直接用于工程项目的第一手经验【3.4】

例说FPGA:可直接用于工程项目的第一手经验【3.4】

16.2 装配说明

本实例工程除了SF-VIP核心板,还需要SF-USB子板以及SF-L70子板用于驱动LCD显示。SF-USB子板的USB-TypeA(P4)用USB线连接PC,整个系统的装配连接如图16-2所示。VIP核心板的P2插座连接到SF-USB子板的P1插座,VIP核心板的P4插座连接到SF-L70子板的P3插座。SF-USB子板通过UART-USB插座P4连接到PC机,同时该板的SD卡槽上需要插入一张标准的SD卡。而SF-L70子板的P1和P2插座则分别连接到7寸液晶屏的触摸屏和40PIN FPC连接器上。

16.3 GB2312中文字符集简介

1.概述

GB2312是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集——基本集》,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于大陆,新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB2312。

GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄罗斯语西里尔字母在内的682个全形字符。GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖99.75%的使用频率。

2.分区表示

GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字或符号。这种表示方式也称为区位码。

·01~09区为特殊符号。

·16~55区为一级汉字,按拼音排序。

·56~87区为二级汉字,按部首/笔画排序。

·10~15区及88~94区则未有编码。

举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。

3.字节结构

在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(或称MSB),第二个字节称为“低位字节”(或称LSB)。

“高位字节”使用了0xA1~0xF7(把01~87区的区号加上0xA0)区间的数据进行编码,“低位字节”使用了0xA1~0xFE(把01~94加上0xA0)区间的数据进行编码。

例如“啊”字在大多数程序中,会以0xB0A1储存(由区位码计算为:0xB0=0xA0+16,0xA1=0xA0+1)。

结合前面的分区,我们可以将GB3212的编码规则归纳如下。

·每个汉字或符号用2个字节表示,高字节代表其所在分区,低字节代表具体的编码值。

·编码高字节,即分区字节的取值范围是0xA1~0xF7,共94个可用的分区。

·编码低字节,即具体的编码值取值范围是0xA1~0xFE,共94个可用编码值。

对于分区字节,又分为以下几个部分。

·0xA1~0xA9区为特殊符号。

·0xB0~0xD7区为一级汉字,按拼音排序。

·0xD8~0xF7区为二级汉字,按部首/笔画排序。

·0xAA~0xAF区及0xF8-0xFE区则未有编码。

4.字模显示原理

如图16-3所示,这是某字符取模软件的截图。它大体示意出了字模显示的基本原理。通常,我们若希望在液晶屏上显示出一个字符,比如这个字符是分辨率为64×32的“A”,那么在这个显示区域内,我们就必须有64×32个像素点对应的色彩数据来表示这个字符。当然,每个像素点的色彩可以用24bit(RGB888)表示,也可以用16bit(RGB565)表示。但是,从最经济实用的角度来看,我们还是愿意用最小的数据量去表示最重要的特征信息。因此,通常的字模只会花1bit来表示1个像素点。1bit的数据可以是0,也可以是1,我们可以假设代表某个像素点的1bit为1时,显示图示的白色;为0时,显示图示的黑色。当然了,我们不会这么“土得掉牙”地让这些字符在我们的液晶屏上只显示黑白,我们可以换任何我们期望的颜色,这是后话,设计中我们可以变通。那么,对于64×32分辨率的字符“A”,我们需要64×32bit,即256B数据就可以表示出来。

我们这个实例中涉及的GB3212中文字符分别有3种分辨率大小,即16×16、32×32和64×64,它们所需要的Flash存储空间计算如表16-1所示。

5.实际字库存储结构

标准的GB2312码,出于“节能减排”的需要,我们不管它们的编码如何,字模数据一定是按顺序依次排列的。因此,对于给定的高字节为MSB、低字节为LSB的GB2312码,它在我们的字库中的寻址换算为:(((MSB-0xa1)×0x5e)+(LSB-0xa1))。

由于GB2312中并没有定义ASCII码,而我们实际的工程使用中通常会非常频繁地使用ASCII码。ASCII码只有1个字节表示,取值为0x00~0x7F。因此,我们在原有的GB2312标准字库字模中人为地插入一些我们ASCII码对应的字库。

如图16-4所示,在GB2312定义的0xA4分区中,这些符号恐怕我们这辈子都用不上,那么我们就考虑直接将ASCII码的字模存放在这个区域。从0x21~0x7f对应的ASCII码为“!”#$%&’0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[

Read more

XIlinx FPGA使用LVDS的电源与电平关键指南

XIlinx FPGA使用LVDS的电源与电平关键指南

针对 7 Series, UltraScale, UltraScale+ FPGAs 以及 MPSoC 器件使用 LVDS 的注意事项: 1. 适用范围 * 器件系列:7 Series, UltraScale, UltraScale+, Zynq UltraScale+ MPSoC。 * 涉及 IO 类型:High Performance (HP) Banks, High Range (HR) Banks, High Density (HD) Banks。 2. 电源电压 (VCCO) 与 输入/输出 的限制 这是该指南的核心内容,根据 Bank 类型和是用作输入还是输出,规则有所不同: A. LVDS

【征文计划】AR健身教练:形随心动 - 基于Rokid CXR-M SDK的实践落地

【征文计划】AR健身教练:形随心动 - 基于Rokid CXR-M SDK的实践落地

一、项目背景与创意起源 在当今快节奏的都市生活中,健身已成为许多人保持健康的重要方式。然而,居家健身面临一个普遍痛点:缺乏专业指导,容易因动作不规范导致运动损伤,同时低头看手机或平板的体验也大大降低了健身的沉浸感和效率。 根据《2024年中国健身行业白皮书》显示,超过65%的居家健身用户表示"缺乏专业指导"是他们放弃健身的主要原因。而Rokid Glasses作为一款轻量级AR眼镜,其独特的"抬头即见"交互方式,为解决这一问题提供了绝佳的硬件基础。 "形随心动"创意的诞生源于一个简单但关键的观察:如果能将专业教练"投射"到用户视野中,实时指导动作,同时提供直观的数据反馈,那么居家健身体验将发生质的飞跃。通过Rokid CXR-M SDK的AI场景、自定义页面和提词器功能,我们能够实现这一愿景。 二、Rokid CXR-M SDK 相关 1. Rokid

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

文章目录 * 前言 * 一、选对路子:官方 Bot 还是个人号? * 方案 A:QQ 开放平台官方机器人 * 方案 B:个人 QQ 号变身机器人 * 二、环境准备:5 分钟搞定基础设施 * 1. 服务器/电脑要求 * 2. 安装 OpenClaw * 3. 配置大模型 API * 三、方案 A:对接 QQ 开放平台官方机器人 * Step 1:注册开发者并创建机器人 * Step 2:获取三件套凭证 * Step 3:配置 IP 白名单和沙箱 * Step 4:OpenClaw 端配置

AI 辅助开发实战:基于树莓派智能家居毕设的高效构建与避坑指南

在基于树莓派的智能家居毕业设计中,很多同学都遇到过相似的困境:树莓派算力有限,跑个复杂的AI模型就卡顿;传感器数据五花八门,处理起来容易出错;想把模型部署到边缘端,步骤繁琐,调试过程更是让人头大。整个项目就像在走钢丝,既要保证功能,又要兼顾性能和稳定性。 最近,我尝试将AI辅助开发工具和轻量级AI推理框架结合起来,重新梳理了整个开发流程,发现效率提升非常明显。这篇文章,我就来分享一下如何利用这些工具,高效、稳定地构建一个智能家居毕设系统,并附上一些实践中总结的“避坑”经验。 1. 背景与核心痛点:为什么需要AI辅助开发? 传统的树莓派智能家居项目开发,通常有几个绕不开的难题: * 硬件资源捉襟见肘:树莓派(尤其是Zero或3B+等型号)的内存和CPU性能有限。直接部署未经优化的TensorFlow或PyTorch模型,很容易导致系统响应迟缓甚至崩溃。 * 模型部署“从入门到放弃”:将PC上训练好的模型移植到ARM架构的树莓派上,涉及框架版本、依赖库、算子兼容性等一系列问题,环境配置就能耗掉大量时间。 * 调试过程“黑盒”化:当系统集成传感器、执行器、网络服务和AI推理后,