基于EDA技术999秒计数的设计.docx

上传人:b****8 文档编号:28604400 上传时间:2023-07-19 格式:DOCX 页数:12 大小:134.29KB
下载 相关 举报
基于EDA技术999秒计数的设计.docx_第1页
第1页 / 共12页
基于EDA技术999秒计数的设计.docx_第2页
第2页 / 共12页
基于EDA技术999秒计数的设计.docx_第3页
第3页 / 共12页
基于EDA技术999秒计数的设计.docx_第4页
第4页 / 共12页
基于EDA技术999秒计数的设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于EDA技术999秒计数的设计.docx

《基于EDA技术999秒计数的设计.docx》由会员分享,可在线阅读,更多相关《基于EDA技术999秒计数的设计.docx(12页珍藏版)》请在冰豆网上搜索。

基于EDA技术999秒计数的设计.docx

基于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月.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1