eda实验要求及报告要求(1)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一全加器的设计

(一)实验目的

以四位二进制全加器为例熟悉利用QuartusII的原理图输入方法和文本输入法设计简单组合电路;学习多层次工程的设计方法。

(二)实验要求

⑴用文本方法实现一位全加器,再采用层次设计法用原理图输入完成4位全加器的设计;

⑵给出此项设计的仿真波形;

⑶用发光LED指示显示结果。

(三)实验流程

1、创建1位全加器工程,新建verilog文本文件,编译,转换为.bsf符号文件。

2、同一文件夹下创建4位全加器工程,新建bdf原理图文件并编译。

3、新建vwf波形文件,时序仿真验证加法功能。

4、引脚锁定并再次编译。

5、添加.sof文件下载测试。

(四)实验效果

实验二模可变计数器的设计(一)实验目的

1、进一步熟悉EDA开发板和QuartusⅡ软件的使用方法;

2、学习静态数码管的使用;

3、学习计数器的设计、仿真和硬件测试;学习7段数码显示译码器设计;(二)实验要求

设计模可变计数器,可任选模的大小(例模15、模115),实验要求:

(1)设置一位控制位M,要求M=0:模X计数;M=1:模Y计数;

(2)计数结果用3位数码管显示,显示BCD码;

(3)给出此项设计的仿真波形;

(4)选择实验电路验证此计数器的功能。

设置涉及2个开关和一个按键,一个开关控制改变模值,另一开关作为使能控制,按键作为异步清0。

(三)实验程序

module counter(CLK,RST,EN,M0,HEX0,HEX1,HEX2,dataout0,dataout1,dataout2);

input CLK,RST,EN,M0;//时钟,复位,复位用KEY0

output[6:0]HEX0,HEX1,HEX2;

output[3:0]dataout0,dataout1,dataout2;

reg[3:0]dataout0,dataout1,dataout2;

reg[6:0]HEX0,HEX1,HEX2;

reg[7:0]MAX;

reg[32:0]cnt;

reg CLK1;

parameter CNT_MAX=1;

always@(posedge CLK or negedge RST)

begin

if(!RST)begin cnt<=0;CLK1<=0;end

else if(cnt==CNT_MAX)

begin cnt<=0;CLK1=~CLK1;end

else cnt<=cnt+1;

end

always@(M0)

if(M0==1)MAX<=8'd15;

else MAX<=8'd105;

wire[7:0]num;

assign num=dataout0+dataout1*10+dataout2*100;

always@(posedge CLK1or negedge RST)

//always@(posedge CLK or negedge RST)

begin

if(!RST)dataout0<=0;

else if(EN&&num

begin

if(dataout0==9)dataout0<=0;

else dataout0<=dataout0+1;

end

else dataout0<=0;

end

always@(posedge CLK1or negedge RST)

//always@(posedge CLK or negedge RST)

begin

if(!RST)dataout1<=0;

else if(EN&&num

begin

if(dataout0==9&&dataout1==9)dataout1<=0;

else if(dataout0==9)dataout1<=dataout1+1;

end

else dataout1<=0;

end

always@(posedge CLK1or negedge RST)

//always@(posedge CLK or negedge RST)

begin

if(!RST)dataout2<=0;

else if(EN&&num

begin

if(dataout0==9&&dataout1==9&&dataout2==9)dataout2<=0;

else if(dataout0==9&&dataout1==9)dataout2<=dataout2+1;

end

else dataout2<=0;

end

always@(*)

begin

case(dataout0)

7'd0:HEX0<=7'b1000000;

7'd1:HEX0<=7'b1111001;

7'd2:HEX0<=7'b0100100;

7'd3:HEX0<=7'b0110000;

7'd4:HEX0<=7'b0011001;

7'd5:HEX0<=7'b0010010;

7'd6:HEX0<=7'b0000010;

7'd7:HEX0<=7'b1111000;

7'd8:HEX0<=7'b0000000;

7'd9:HEX0<=7'b0010000;

default:HEX0<=7'b1111111;

endcase

相关文档
最新文档