基于EDA技术999秒计数的设计.docx
《基于EDA技术999秒计数的设计.docx》由会员分享,可在线阅读,更多相关《基于EDA技术999秒计数的设计.docx(12页珍藏版)》请在冰豆网上搜索。
基于EDA技术999秒计数的设计
玉林师范学院
EDA课程设计论文
题目:
基于EDA技术999秒计数的设计
院(系):
电子与通信工程学院
专业:
通信工程
学生姓名:
000
学号:
********0000
指导老师0000
2014年6月30日
评语
得分
基于EDA技术999秒计数的设计
摘要
本文以Altera公司的QuartusⅡ软件作为开发平台,使用VerilogHDL语言编程,设计了一个999秒计数电路系统。
在程序描述的过程中,用了行为描述方式和结构描述方式二种描述方式对8位计数译码器电路系统进行描述。
一定条件下该计数译码器电路能动态扫描电路,将00~FF一共255个数字显示出来。
整个计数译码器电路系统由两个主要电路构成:
4位二进制加法计数器adder4模块、七段共阴数码显示器的译码器display7模块。
最后给出了仿真的波形。
关键字:
数码显示器,数字频率计,VerilogHDL
引言
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种用文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL和VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。
现在,随着系统级FPGA以及片上系统的出现,软硬件协同设计和系统设计变得越来越重要。
传统意义上的硬件设计越来越倾向于与系统设计和软件设计相结合。
设计原理
在999秒计数电路设计电路设计中,需要事先设计一个4位二进制加法计数器adder4模块和一个七段共阴数码显示器的译码器diaplay7模块,然后用模块例化方式将这两种模块组成计数译码系统电路。
999秒计数电路设计流程
VerilogHDL的设计流程与原理图输入法设计流程基本相同,999秒计数电路设计电路的设计包括adder4.v、display7.v和count8.bdf三个模块,其中adder4.v和display7.v是用VerilogHDL编写的4位二进制加法计数器和共阴极七段显示译码器源程序,count8.bdf则是以原理图输入法设计的顶层文件。
count8.bdf原理图中以adder4.v和display7.v作为元件,设计一个999秒计数电路设计电路。
设计前为设计建立一个工程目录(D:
\EDA),用于存放VerilogHDL设计文件
1编辑VerilogHDL源程序
在QuartusII集成环境下,首先为4位二进制加法计数器adder4设计电路建立一个新工程(NewProjectWizard),然后为执行“File”菜单的“New”命令,弹出如图4.15所示的打开新文件对话框,选择对话框中的“VerilogHDLFile”文件类型,进入VerilogHDL文本编辑方式。
1.1编辑4位二进制加法计数器的VerilogHDL源程序
进入文本编辑方式后,编辑4位二进制加法计数器的VerilogHDL源程序,并以adder4.v为源程序的文件名,保存在D:
\EDA工程目录中,后缀为.v表示VerilogHDL源程序文件。
注意:
VerilogHDL源程序的文件名应与设计模块名相同,否则将是一个错误,无法通过编译。
4位二进制加法器adder4.v的源程序如下:
modulekeyboard(clk,row,col,key);
inputclk;//50MHZ时钟输入
input[3:
0]col;//列
output[3:
0]row;//行
output[3:
0]key;//按键值
reg[3:
0]row;
reg[3:
0]key;
reg[5:
0]count;//时钟计数器
reg[2:
0]state;//状态标志
regkey_flag;//按键标志位
regclk_500khz;//500KHZ时钟信号
reg[3:
0]row_reg;//寄存扫描行值
reg[3:
0]col_reg;//寄存扫描列值
always@(posedgeclk)//500KHZ扫描时钟信号
if(count>=50)
begin
clk_500khz<=~clk_500khz;
count<=0;
end
elsecount<=count+1;
always@(posedgeclk_500khz)
case(state)
0:
begin
key_flag<=1'b0;//清按键标志
row[3:
0]<=4'b0000;//行线全部拉低,确定有没有按键被按下
if(col[3:
0]!
=4'b1111)//有键按下(列线有被拉低,数据出现不全1)
begin
row[3:
0]<=4'b0111;//扫描第0行(第0行线拉低)
state<=1;//转到第1状态,扫描第0行
end
elsestate<=0;//没有键按下,返回case0,重新扫描
end
1:
begin
if(col[3:
0]!
=4'b1111)//第0行有键按下(列线有被拉低,数据出现不全1)
state<=5;//转到第5状态,保存行列信息
else
begin
row[3:
0]<=4'b1011;//扫描第1行(第1行线拉低)
state<=2;//转到第2状态,扫描第1行
end
end
2:
begin
if(col[3:
0]!
=4'b1111)//第1行有键按下(列线有被拉低,数据出现不全1)
state<=5;//转到第5状态,保存行列信息
else
begin
row[3:
0]<=4'b1101;//扫描第2行(第2行线拉低)
state<=3;//转到第3状态,扫描第2行
end
end
3:
begin
if(col[3:
0]!
=4'b1111)//第2行有键按下(列线有被拉低,数据出现不全1)
state<=5;//转到第5状态,保存行列信息
else
begin
row[3:
0]<=4'b1110;//扫描第3行(第3行线拉低)
state<=4;//转到第4状态,扫描第3行
end
end
4:
begin
if(col[3:
0]!
=4'b1111)//第3行有键按下(列线有被拉低,数据出现不全1)
state<=5;//转到第5状态,保存行列信息
else
state<=0;//没有键按下,返回case0,重新扫描
end
5:
begin
if(col[3:
0]!
=4'b1111)//(列线有被拉低,数据出现不全1,说明按键没松开)
begin
row_reg<=row;//保存扫描列值
col_reg<=col;//保存扫描行值
key_flag<=1'b1;//有键按下状态标志
state<=5;//返回状态5。
(等待按键松开)
end
else
state<=0;
end
endcase
always@(clk_500khzorrow_regorcol_reg)
begin
if(key_flag==1'b1)
begin
case({row_reg,col_reg})//行,列
8'b0111_1110:
key<=4'h0;
8'b0111_1101:
key<=4'h1;
8'b0111_1011:
key<=4'h2;
8'b0111_0111:
key<=4'h3;
8'b1110_1110:
key<=4'h4;
8'b1110_1101:
key<=4'h5;
8'b1110_1011:
key<=4'h6;
8'b1110_0111:
key<=4'h7;
8'b1101_1110:
key<=4'h8;
8'b1101_1101:
key<=4'h9;
8'b1101_1011:
key<=4'hA;
8'b1101_0111:
key<=4'hB;
8'b1011_1110:
key<=4'hC;
8'b1011_1101:
key<=4'hD;
8'b1011_1011:
key<=4'hE;
8'b1011_0111:
key<=4'hF;
endcase
end
end
endmodule
完成adder4加法器源程序的编辑后,用adder4.v文件名存盘,然后在QuartusII集成环境下,对adder4进行编译,然后执行“File”菜单的“Create/Update”项的“GreateSymbolFilesforCurrentFile”命令,为adder4设计文件生成元件符号,如图所示。
在元件符号中,细的输入/输出线表示单信号线,如clk、ena和clrt;粗的输入输出线表示多信号总线,如y[3..0]。
clk是时钟输入端;clr是复位控制输入端,当clr=1时计数器被复位,输出y[3..0]=0000;ena是使能控制输入端,当ena=1时,计数器才能工作;cout是进位输出端,当输出y[3..0]=1111时,cout=1。
Clk_div元件符号
1.2.编辑七段显示译码器源程序
首先为七段显示译码器设计建立一个新工程,然后在VerilogHDL文本编辑方式下,编辑七段显示译码器的源程序,并以display7.v为源程序名,保存在工程目录中。
display7.v源程序如下:
moduledisplay(
inputwire[3:
0]din,
outputreg[7:
0]dout,
outputwire[7:
0]ledsel
);
assignledsel=8'b11111110;
always@(din)
begin
case(din)
4'b0000:
dout=8'b00111111;
4'b0001:
dout=8'b00000110;
4'b0010:
dout=8'b01011011;
4'b0011:
dout=8'b01001111;
4'b0100:
dout=8'b01100110;
4'b0101:
dout=8'b01101101;
4'b0110:
dout=8'b01111101;
4'b0111:
dout=8'b00000111;
4'b1000:
dout=8'b01111111;
4'b1001:
dout=8'b01101111;
4'b1010:
dout=8'b01110111;
4'b1011:
dout=8'b01111100;
4'b1100:
dout=8'b00111001;
4'b1101:
dout=8'b01011110;
4'b1110:
dout=8'b01111001;
4'b1111:
dout=8'b01110001;
default:
dout=8'b00000000;
endcase
end
endmodule
为了使display7.v源程序也能作为十六进制译码器,所以将A~F十六进制数的译码输出也包括在内。
display7.v通过编译后,生成显示译码器的元件符号如图所示。
在元件符号中,a[3..0]为输入信号0~15,经过译码后得到十六进制0~F的编码,由q[7..0]输出信号,接入共阴的七段数码管显示。
Display7生成的元件符号
Time_count生成的元件符号
2设计999秒计数电路设计电路顶层文件
生成的adder4和display7设计电路的元件图形符号只是代表两个分立的电路设计结果,并没有形成系统。
顶层设计文件就是调用adder4和display7两个功能元件,将它们组装起来,成为一个完整的设计。
Count8是本例的顶层设计文件,在QuartusII集成环境下,首先为顶层设计文件建立一个新工程(count8),然后打开一个新文件,并进入图形编辑方式(BlockDiagram/SchematicFile)。
在图形编辑框中,调出adder4和display7元件符号以及输入(input)和输出(output)元件符号,如图所示。
999秒计数电路设计电路的顶层设计图
根据999秒计数电路设计电路设计原理,用鼠标按连接关系将它们拉接在一起。
具体操作如下
把输入元件iuput与adder4的lck拉接在一起,并把输入元件的名称改为clk,作为计数器时钟脉冲输入端,。
②把输入元件input与adder4的clr拉接在一起,并把输入元件的名称改为clr,作为计数器adder4的复位输入端。
③把adder4输出y[3..0]与display7的输入a[3..0]拉接在一起,把display7的输出q[7..0]与输出元件output拉接在一起,并把输出元件的名称改为q[7..0],作为译码输出端。
④把输出元件output与display7的cout拉接在一起,并把输出元件的名称改为cont,作为加法器进位输出端。
完成上述操作后,得到999秒计数电路的顶层设计结果(见图所示)。
顶层设计图形完成后,用count999.bdf作为文件名存入工程目录中。
“count999”是用户为顶层文件定义的名字,后缀.bdf表示图形设计文件。
2.1编译顶层设计文件
“Processing”菜单下的“StartCompilation”命令,对顶层设计文件进行编译。
完成对图形编辑文件的编译后,系统为999秒计数设计文件生成的元件符号如图所示。
此元件符号可以作为共享元件,供其他电路或系统设计调
结论
本文主要介绍了999秒计数电路的VerilogHDL的设计与实现,其可以在Altera公司的DE2开发板等可编程器件来实现。
其中主要介绍了4位二进制加法计数器模块的设计与实现,七段共阴显示译码器的设计与实现,以及由这两个模块所组成的999秒计数电路的设计与实现。
参考文献
1王振红.VHDL数字电路设计与应用实践教程.北京:
机械工业出版社,2003年6月.
2江国强.EDA技术与与应用(第2版).北京:
电子工业出版社,2007年4月.
3王钿卓兴旺.基于VerilogHDL的数字系统应用设计.北京:
国防工业出版社,2006年1月.
4延明张亦华.数字电路EDA技术入门.北京:
北京邮电大学出版社,2006年1月.
5王钿卓兴旺盛.基于VerilogHDL的数字系统应用设计.北京:
国防工业出版社,2006年1月.