news 2026/8/29 4:18:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
例说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[

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 18:48:40

小程序毕设项目:基于springboot+小程序的平安代驾平台小程序(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/27 21:01:11

【计算机毕业设计案例】基于uniapp+springboot微信小程序的代驾系统的设计与实现基于springboot+小程序的平安代驾平台小程序(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/27 2:38:04

40 个定时任务,完美诠释 RocketMQ 设计精髓!

今天来分享 RocketMQ 的定时任务。通过这些定时任务&#xff0c;能让我们更加理解 RocketMQ 的消息处理机制和设计理念。 从 RocketMQ 4.9.4 的源代码上看&#xff0c;RocketMQ 的定时任务有很多&#xff0c;今天主要讲解一些核心的定时任务。 1 架构回顾 首先再来回顾一下 …

作者头像 李华
网站建设 2026/8/26 10:23:48

信不信?这个 SQL 题,可以难倒大部分人

周末的时候&#xff0c;一个读者问了我一个很有意思的问题&#xff0c;是关于 MySQL 中 update 加锁的问题。 他用下面这张数据库表&#xff0c;做了个 MySQL 实验的时候。 发现事务 B 的 update 不会阻塞&#xff0c;而事务 C 的 update 会阻塞&#xff0c;都是对 id 10 这条…

作者头像 李华