1、eda技术与veriloghdl实验报告 EDA技术与Verilog HDL实验报告 学生姓名 :樊奇峰 学生学号 : 所在班级 :10级电科(2)班 实验老师 :陈亮亮 实验地点地点 :理工楼实验一 EDA实验箱使用一实验目的1GW48教学实验系统原理与使用介绍2熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。二实验内容首先了解GW48系统使用注意事项以及GW48系统主板结构与使用方法,接着对各实验电路结构图特点与适用范围简述。最后在QuartusII界面下,用文本输入和图形输入分别验证七选一多路选择器的功能。三程序清单文本输入如下所示: module mux71(a,b,c,
2、d,e,f,g,s,y);input a,b,c,d,e,f,g;output y;input 2:0 s;reg y ;always (a,b,c,d,e,f,g,s)case (s)0: y=a;1: y=b;2: y=c;3: y=d;4: y=e;5: y=f;6: y=g;default: y=a;endcase endmodule 图形输入如下所示:四、 实验步骤1、新建一个名称为MUX71a的工程,并在该文件夹中新建一个的文件。2、编译代码,编译成功后进行第三步,若不成功则查改代码中的错误。3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4
3、、 验证输出端口波形是否达到七选一多路选择器的功能。 五、实验数据仿真波形如下图所示。六、实验小结通过对EDA实验箱使用,了解了GW48教学实验系统原理与使用介绍;熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。实验二 用原理图和VerilogHDL语言设计一位全加器一实验目的熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。二实验内容在QuartusII下用原理图和VerilogHDL语言设计一位全加器,并编译、仿真验证其功能。三程序清单全加器顶层文件设计:半加器描述:四实验步骤1、新建一个名称为f_adder的工程,并在该文件夹中新建一个的文件。2、
4、新建一个名称为的文件。3、编译工程,编译成功后进行下一步,若不成功则查改错误。4、 在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。5、 验证输出端口波形是否实现一位全加器的功能。 五、实验数据I、全加器仿真波形如下图所示:II、半加器仿真波形如下图所示:六、实验小结通过此次实验熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。实验三 含异步清0和同步时钟使能的4位加法计数器一实验目的熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。二实验内容在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,
5、并编译、仿真验证其功能。三程序清单计数器顶层文件设计:10进制计数器文本输入:module CNT10(clk,rst,en,load,cout,dout,data);input clk,en,rst,load;input 3:0 data;output3:0 dout;output cout;reg 3:0 q1;reg cout;assign dout = q1;always (posedge clk or negedge rst)begin if (!rst) q1=0;else if(en) begin if (!load) q1=data; else if(q19) q1=q1+1;
6、 else q1=4b0000; end endalways (q1) if (q1=4h9) cout= 1b1; else cout= 1b0;endmodule 60位计数器文本输入: module CNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA);input CLK,EN,RST,LOAD; input 3:0 DATA; output3:0 DOUT1; output2:0 DOUT2; output COUT1; output COUT2; reg 3:0 Q1; reg 2:0 Q2; reg COUT1; reg COUT2
7、; assign DOUT1 = Q1; assign DOUT2 = Q2; always (negedge CLK or negedge RST) begin if(!RST) Q1=0; else if (EN) begin if (!LOAD) Q1=DATA; else if (Q19) Q1=Q1+1; else Q1=4b0000; end end always (Q1) if (Q1=4h9) COUT1=1b1; else COUT1=1b0; always (negedge COUT1 or negedge RST) begin if(!RST) Q2=0; else if
8、 (EN) begin if (!LOAD) Q2=DATA; else if (Q25) Q2=Q2+1; else Q2=4b0000; end end always (Q2) if (Q1=4h9)&(Q2=3h5) COUT2=1b1; else COUT2=1b0;endmodule60位计数器图形输入:四实验步骤1、新建一个名称为CNT10的工程,并在该文件夹中新建一个的文件。2、编译工程,编译成功后进行下一步,若不成功则查改错误。3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、验证输出端口波形是否实现异步清0和同步时钟使能的4位加法计数
9、器的功能。五、实验数据 10位计数器文本输入仿真波形:60位计数器文本输入仿真波形:60位计数器图形输入仿真波形:六、实验小结通过此次实验熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器实验四 8位十进制频率计设计一实验目的熟悉在QuartusII下设计2位和8位十进制频率计。二实验内容在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。三程序清单频率计顶层文件设计:(1)2位十进制频率计图形输入:图形输入:图形输入:文本输入:module conter100(CLK,CLR,EN,cout,ge,shi); input CLK,EN,CLR; ou
10、tput 3:0ge; output 3:0shi ; output cout; reg cout; reg 3:0ge; reg 3:0shi;always (posedge CLK ) if (!CLR) begin ge=0; shi=0; cout=0; end else if(ge=9)&(shi=9) begin ge=0; shi=0; cout=1; end else if (ge=9) begin ge=0; shi=shi+1; cout=0; end else begin ge=ge+1; shi=shi; cout=0; end endmodule文本输入: modul
11、e tf_ctro (clk,en,clr,lock);input clk;output en,clr,lock;reg en,clr,lock;integer d=0;always (posedge clk)begind=d+1;if (d=1)beginen=0;lock=0;clr=0; endelse if(d=2)beginlock=1;en=0;clr=0;endelse if (d=3)beginlock=0;clr=0;en=0;endelse if (d=6)beginlock=0;clr=1;en=0;endelse if (d=7)beginlock=0;clr=0;en
12、=0;endelse if(d=8)beginlock=0;clr=0;en=1;endelse if(d=16)begind=0;en=0;lock=0;clr=0;endendendmodule 74374锁存器文本输入:module octal(clk,en,d_in,q_in );input clk,en; input 3:0 d_in; output 3:0 q_in; reg 3:0 Q; assign q_in=Q;always (posedge clk) if(!en) beginQ=d_in;endendmodule(2)8位十进制频率计图形输入:四实验步骤1、 新建一个名称
13、为CTR10的工程,并在该文件夹中新建一个的文件,在工程文件夹中新建一个的文件。2、 编译工程,编译成功后进行下一步,若不成功则查改错误。3、 在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、 验证输出端口波形是否实现8位十进制频率计的功能。 五、实验数据仿真波形如下图所示:(1)2位十进制频率计图形输入仿真波形: 文本输入仿真波形:图形输入仿真波形输入:图形输入仿真波形:(2)8位十进制频率计图形输入仿真波形六、实验小结通过本次实验熟悉在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。实验五 用状态机实现对ADC0809采样控制
14、一实验目的熟悉在QuartusII下用状态机实现对ADC0809采样控制。二实验内容在QuartusII下用状态机实现对ADC0809采样控制,并编译、仿真验证其功能。三实验原理四、实验程序清单module ADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T); input 7:0D; input CLK,RST; input EOC; output ALE; output START,OE; output ADDA,LOCK_T; output 7:0Q; reg ALE,START,OE; parameter s0=0, s1=1, s2=2,
15、 s3=3, s4=4; reg 4:0 cs,next_state; reg 7:0 REGL; reg LOCK; always (cs or EOC) begin case(cs) s0:next_state=s1; s1:next_state=s2; s2:if (EOC=1b1) next_state=s3; else next_state=s2; s3:next_state=s4; s4:next_state=s0; default:next_state=s0; endcase end always (cs ) begin case(cs) s0:begin ALE=0;START
16、=0;OE=0;LOCK=0;end s1:begin ALE=1;START=1;OE=0;LOCK=0;end s2:begin ALE=0;START=0;OE=0;LOCK=0;end s3:begin ALE=0;START=0;OE=1;LOCK=0;end s4:begin ALE=0;START=0;OE=1;LOCK=1;end default:begin ALE=0;START=0;OE=0;LOCK=0;end endcase end always (posedge CLK or posedge RST) begin if (RST) cs= s0; else cs=ne
17、xt_state; end always (posedge LOCK) if (LOCK) REGL=D; assign ADDA=0; assign Q=REGL; assign LOCK_T=LOCK; endmodule 五实验步骤1新建一个名称为ADC0809的工程,并在该文件夹中新建一个的文件。2编译工程,编译成功后进行下一步,若不成功则查改错误。3在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4. 验证输出端口波形是否实现用状态机实现对ADC0809采样控制 仿真波形如下图所示:状态转换图:六、实验小结通过此次实验熟悉在QuartusII下用状
18、态机实现对ADC0809采样控制,并编译、仿真验证其功能。实验六 交通灯设计实验一实验目的熟悉在QuartusII下设计十字路口交通灯控制电路。二实验内容在QuartusII下设计十字路口交通灯控制电路,并编译、仿真验证其功能。三实验原理状态表:四、实验程序清单module traffic(clk,enb,accounth,account1,bccounth,bccount1,lampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4); input clk,enb; output 3:0 accounth,account1,bccounth
19、,bccount1; output lampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4; reg tempa,tempb; reg 2:0 counta,countb; reg 7:0 numa,numb; reg 7:0 ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft; reg lampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4; assign accounth,account1=numa; assign bccoun
20、th,bccount1=numb; always(enb)if(!enb) begin ared=8b01010101; ayellow=8b00000101; agreen=8b01000000; aleft=8b00010101; bred=8b01100101; byellow=8b00000101; bleft=8b00010101; bgreen0) if(numa3:0=0) begin numa3:0=9; numa7:4=numa7:4-1; end else numa3:0=numa3:0-1; if(numa=0) tempa=0; end else begin tempa
21、=1; case(counta) 0: beginnuma=agreen;lampa1,lampa2,lampa3,lampa4=2;counta=1;end 1: beginnuma=ayellow;lampa1,lampa2,lampa3,lampa4=4;counta=2;end 2: beginnuma=aleft;lampa1,lampa2,lampa3,lampa4=1;counta=3;end 3: beginnuma=ayellow;lampa1,lampa2,lampa3,lampa4=4;counta=4;end 4: beginnuma=ared;lampa1,lampa
22、2,lampa3,lampa4=8;counta=0;end default:lampa1,lampa2,lampa3,lampa4=8; endcase end end else begin lampa1,lampa2,lampa3,lampa4=4b1000; counta=0; tempa0) if(numb3:0=0) begin numb3:0=9; numb7:4=numb7:4-1; end else numb3:0=numb3:0-1; if(numb=0) tempb=0; end else begin tempb=1; case(countb) 0: beginnumb=b
23、red;lampb1,lampb2,lampb3,lampb4=8;countb=1;end 1: beginnumb=bgreen;lampb1,lampb2,lampb3,lampb4=2;countb=2;end 2: beginnumb=byellow;lampb1,lampb2,lampb3,lampb4=4;countb=3;end 3: beginnumb=bleft;lampb1,lampb2,lampb3,lampb4=1;countb=4;end 4: beginnumb=byellow;lampb1,lampb2,lampb3,lampb4=4;countb=0;end
24、default:lampb1,lampb2,lampb3,lampb4=8; endcase end end else begin lampb1,lampb2,lampb3,lampb4=4b1000; countb=0; tempb=0; end end endmodule 状态图:五、实验步骤1新建一个名称为traffic的工程,并在该文件夹中新建一个的文件。2编译工程,编译成功后进行下一步,若不成功则查改错误。3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、 验证输出端口波形是否实现用状态机实现对十字路口交通灯控制。 仿真波形如下图所示。引脚分
25、配图:六、实验小结通过此次实验熟悉在QuartusII下设计十字路口交通灯控制路,并编译、仿真验证其功能。实验七 简易数字时钟系统实验-考试实验一实验目的熟悉在QuartusII下设计简易数字时钟系统。二实验内容在QuartusII下设计简易数字时钟系统,并编译、仿真验证其功能。三、实验要求 (1)能正常计时 (2)有暂停键,清零键 (3)小时、分钟、秒钟可调(可加减) (4)整点报时四、程序清单module shizhong(CLK,CLR,HOUR,MIN,SEC,EN,HOUT,SW,MODE,up);input CLK,EN,CLR,SW,up;output HOUT,HOUR,MIN
26、,SEC;output 3:0 MODE;reg 7:0HOUR,MIN,SEC;reg HOUT,CLK1;reg 3:0 MODE;/CLK 为时钟,EN 为使能,也就是暂停按钮,SW为调整MODE的按钮/UP为调整时钟的加按钮也是减按钮,当MODE为1到6为加按钮,当MODE为7到12为减按钮/HOUT为报警器的控制always (CLK or up)/UP是时分秒加减按钮,在MODE 1到6 为加,7到12为减 begin if(MODE=0) CLK1=CLK;/*MODE 0 为时钟自动走,其他MODE为暂停调整时钟 else CLK1=up; end always (posedg
27、e SW) /*调整模式,范围为模式1到模式12 begin if(SW) begin MODE12) MODE=0; end end /* always (posedge CLK1 or posedge CLR) begin if(CLR) /*清除时间,使其为 00:00:00 begin SEC=0;HOUR=0;MIN=0; end /*清除时间,使其为 00:00:00 /下面为:时钟自动运行代码else begin if(!EN) if(MODE=0) begin if(SEC3:0=9)&(SEC7:4=5)&(MIN3:0=9)&(MIN7:4=5)&(HOUR3:0=3) /*当 分为59,秒为59 且时为的个位为3时,将进行下一部判断 begin if(HOUR7:4=2)/*当 分为59,秒为59 且时为 23时,下一秒清零,且报警 begin HOUR7:4=0; HOUR3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1