1、 上交报告电子版和纸质版各一份以及程序附件发至老师邮箱 摘 要以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。本实验要求通过verilog语言,在软件Quatusii上编写程序,并利用modelsim软件进行仿真,最终在fpga开发板的液晶显示器上显
2、示出英文字体。关键词:fpga; lcd; 显示英文 1.1 完整的程序内容 /本实验是用LCD1602显示英文。(LCD带字库)module lcd(clk, rs, rw, en,dat);input clk; /系统时钟输入50M output 7:0 dat; /LCD的8位数据口 output rs,rw,en; /LCD的控制脚 reg e;reg 7:reg rs;reg 15:0 counter;reg 4:0 current,next;reg clkr;reg 1:0 cnt;parameter set0=4h0;parameter set1=4h1;parameter se
3、t2=4h2;parameter set3=4h3;parameter dat0=4h4;parameter dat1=4h5;parameter dat2=4h6;parameter dat3=4h7;parameter dat4=4h8;parameter dat5=4h9;parameter dat6=4hA;parameter dat7=4hB;parameter dat8=4hC;parameter dat9=4hD;parameter dat10=4hE;parameter dat11=5h10;parameter nul=4hF;always (posedge clk) begi
4、n counter=counter+1;if(counter=16h000f) clkr=clkr;end always (posedge clkr) current=next;case(current) set0: begin rs=0; dat=8h31; next=set1; end /*设置8位格式,2行,5*7* set1:h0C;=set2; end /*整体显示,关光标,不闪烁*/ set2:=set3; end /*设定输入方式,增量不移位*/ set3:=dat0; end /*清除显示*/ /上面是LCD的初始化 dat0:=1;h3C;=dat1; end dat1:=F
5、;=dat2;dat2:P=dat3;dat3:G=dat4;dat4:A=dat5;dat5:h3E;=dat6;dat6:=dat7;dat7:O=dat8;dat8:=dat9;dat9:D=dat10;dat10:!=dat11;dat11:=nul;/上面是在这12个状态中要显示的字符 FPGA GOOD!nul:h00; /行一遍 然后 把液晶的E 脚 拉高 if(cnt!=2h2) if(cnt!h2) begin enext=set0;cnt=cnt+1; else begin next default: next=set0; endcase assign en=clkr|e;
6、 assign rw=0; assign on=1; assign blon=1; endmodule 1.2 各段程序意义的声明1.2.1以下为程序的首部分,各变量类型的声明,是编写每个程序的必要部分:1.2.2程序中将要用到的常量的声明,为方便在接下来的程序中将要用到这些变量时重复表示的麻烦和修改其中一个值时的繁琐,因此进行如下定义:1.2.3以下为分频段落:1.2.4接下来为lcd的初始化程序,用到了case语句:1.2.5以下程序为在FPGA开发板上显示“FPGA GOOD”:1.2.6以下程序将E脚电平拉高,并返回继续执行前段程序: endmodule1.3 程序意义说明该程序目的在
7、于实现在fpga开发板的lcd上显示英文字体,用Quatusii进行verilog语言的程序编写,并用modelsim软件进行仿真,然后进行管脚的分配,最后下载在fpga的开发板上进行试验结果的观察。改程序并不复杂,在程序中用到了大量的case循环语句,进行lcd的初始化和显示英文字符,在初始化前首先进行了对时钟的分频,以保证显示的稳定。1.4 实验中遇到的问题及解决办法 第一次将实验程序下载到开发板上并进行观察时发现,lcd的显示屏上应显示的“FPGA GOOD”只能在下载的过程中在开发板上显示,下载完成后即消失,经老师的检查发现需要在程序的最后添加上“assign on=1;assign blon=1;”即可,因为lcd的电路原理要求在高电平时才能显示,在下载过程中被拉至高阻状态,会有符合电路要求的时刻,因此会短暂的显示出实验结果,在下载完成后又被至于低电平,因此没有显示的结果,而在加上这两句连续赋值语句后即可满足电路的要求。参考文献(著作图书文献)1 作者,作者. 书名. 版次. 出版社,出版年:引用部分起止页2 作者. 书名. 出版社,出版年.(翻译图书文献)3 作者. 书名. 译者. 版次. 出版者,出版年:(学术刊物文献)4 作者. 文章名. 学术刊物名.年,卷(期):(学术会议文献)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1