eda实验要求及报告要求(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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