字模提取软件的使用(pctolCD2002,基于FPGA的VGA显示汉字)

时间:2024-04-12 10:38:35
  1. 字模软件http://pan.baidu.com/s/1kVHrjL1(有问题的留言)
  2. 设置参数
    字模提取软件的使用(pctolCD2002,基于FPGA的VGA显示汉字)
    选择逐行式(指的是一个字模,按行计数)
    取模方向:顺向,高位在前
    本人取得字模是基于FPGA的VGA显示,而virilog hdl语言的数组是高位在前 ,符合其语法规则,如 reg [120:0]
    输出数制:16进制,(h),一个16进制相当于4位二进制如3aH=0010_1010,其中1表示该出有像素点,0表示没有像素点。
  3. 举例说明
    字模提取软件的使用(pctolCD2002,基于FPGA的VGA显示汉字)
    下方的编辑框里输入想显示的字符,点击生成字符如下:
    你(0) 好(1)
    DB 08H 80H 08H 80H 08H 80H 11H FEH 11H 02H 32H 04H 34H 20H 50H 20H 91H 28H 11H 24H 12H 24H 12H 22H;
    DB 14H 22H 10H 20H 10H A0H 10H 40H;”你”,0

DB 10H 00H 10H FCH 10H 04H 10H 08H FCH 10H 24H 20H 24H 20H 25H FEH 24H 20H 48H 20H 28H 20H 10H 20H;
DB 28H 20H 44H 20H 84H A0H 00H 40H;”好”,1
“你”的第一行:为08H80H,对应的二进制:0000_1000_1000_0000
“好”的第一行:为10H00H,对应的二进制:0001_0000_0000_0000
则在VGA上显示的第一行为 parameter line00=08801000;
下面的15行如上这样定义。
4. 应用代码说明
部分显示代码如下 (Verilog hdl)
reg[8:0] char_bit;
[email protected](posedge CLK_to_DAC)
if(X==10’d50)char_bit<=9’d500; //当显示到144像素时准备开始输出图像数据
else if(X>10’d50&&X<10’d550) //左边距屏幕144像素到416像素时 416=144+272(图像宽度)
char_bit<=char_bit-1’b1; //倒着输出图像信息
reg[29:0] vga_rgb; //定义颜色缓存
[email protected](posedge CLK_to_DAC)
if(X>10’d50) //X控制图像的横向显示边界:左边距屏幕左边144像素 右边界距屏幕左边界416像素
begin case(Y) //Y控制图像的纵向显示边界:从距离屏幕顶部160像素开始显示第一行数据
10’d0:
if(char_line000[char_bit])vga_rgb<=30’b0000000000_1111111111_0000000000; //如果该行有数据 则颜色为绿色
else vga_rgb<=30’b0000000000_0000000000_0000000000; //否则为白色
10’d1:
if(char_line001[char_bit])vga_rgb<=30’b0000000000_1111111111_0000000000; //如果该行有数据 则颜色为绿色
else vga_rgb<=30’b0000000000_0000000000_0000000000;

定义如下:
reg[499:0]
char_line20=500’h0000000000000000000000,
char_line21=500’h0000000000000000000000,
char_line22=500’h0000000000000000000000,
char_line23=500’h3FFC3E007CC7FCE7FE0000,
char_line24=500’h4242420010624242920000,
char_line25=500’h4242420010624242100000,
char_line26=500’h8042800010524242100000,
char_line27=500’h807C800010524242100000,

补充代码:
如何让文字左右滚动起来
方法:移位
[email protected](posedge VGA_VS or negedge KEY[0])begin
char_line000<={char_line000[499:0],char_line000[0]};
char_line001<=char_line001<<1;
char_line002<=char_line002<<1;
char_line003<=char_line003<<1;
char_line004<=char_line004<<1;
char_line005<=char_line005<<1;
char_line006<=char_line006<<1;
char_line007<=char_line007<<1;
char_line008<=char_line008<<1;
char_line009<=char_line009<<1;
char_line00a<=char_line00a<<1;
char_line00b<=char_line00b<<1;
char_line00c<=char_line00c<<1;
char_line00d<=char_line00d<<1;
char_line00e<=char_line00e<<1;
char_line00f<=char_line00f<<1;
char_line010<=char_line010<<1;
char_line011<=char_line011<<1;
char_line012<=char_line012<<1;
char_line013<=char_line013<<1;
char_line014<=char_line014<<1;
char_line015<=char_line015<<1;
char_line016<=char_line016<<1;
char_line017<=char_line017<<1;

end
可以通过KEY[0],加上初始化的信息,便于控制。