新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于SOPC的通用字符VGA显示电路设计

基于SOPC的通用字符VGA显示电路设计

作者:时间:2012-06-29来源:网络收藏

在整个工程的顶层文件中例化生成的system_0模块,用锁相环模块产生所需的25MHz时钟信号并作为模块iCLK 25信号输入。由于的CPU RESET信号只能锁定在实际器件中的按钮上作为输入,而DE2开发上的4个按钮在后面的实例都需要用到,因此在顶层文件中将CPU RESET信号直接置1。system_0的其他的输入输出信号根据开发板的相应资源进行定义和管脚锁定。
本设计的FPGA配置信息(sof文件)写入EPCS器件中,Nios II程序(elf文件)写入CFI Flash模块中,所用到的两个字库也写入CFI Flash中,字库起始偏移地址分别为0x80000和0x1000000。

2 原理
调用点阵字库实现任意数字和汉字的实时是本设计的基本方法。本设计中分别采用ASC16和HZK16字库作为ASCII码和汉字的点阵字库,这两个字库最早在UCDOS系统中被使用。
ASC16字库含有256个ASCII码,每个ASCII码均以16×8的点阵表示,点阵信息以行优先的方式存储,每个字符占用128个存储位(16字节),按照ASCII码的编码顺序存储,故一个字符的ASCII码值乘16就是它在ASC16字库中的偏移地址。
HZK16是依据GB2312编码存储的点阵字库,每个汉字用16×16的点阵表示,每个字符占用256个存储位(32字节),点阵信息同样以行优先方式存储。
HZK16字库内汉字按照内码顺序存储,每个汉字的内码由两个字节组成,高位字节为区号,低字节为位号,两字节的范围均为0xA1~0xFE共94个取值。将汉字的两个字节分别减去0xA1,即可得到该汉字的区号和位号。设某个汉字编码的两个字节分别为0xMM和0xNN,则该汉字在HZK16字库中对应的偏移地址为:
OFFEST=[94×(0xMM-0xA1)+(0xNN-0xA1)]×32
定位了ASCII码字符或汉字在点阵字库中的位置后,读出其所对应的16字节或32字节数据,用按位与运算和左移运算对每个字节的8个位逐一测试,将测试结果为1的位的对应像素填充为前景色,否则将像素填充为背景色,实现设定字符的

3 中相关函数的定义
根据上述原理,以C语言编写适用于上述的字符显示函数,并以Nios II HAL系统库为基础。
3.1 ASCII码字符显示函数show_asc
此函数用于在输出画面的(x,y)坐标处显示单个ASCII码字符asc,主要代码如下:
d.JPG
e.JPG


评论


相关推荐

技术专区

关闭