eda技术与veriloghdl实验报告.docx

上传人:b****2 文档编号:12896292 上传时间:2023-04-22 格式:DOCX 页数:41 大小:1,017.97KB
下载 相关 举报
eda技术与veriloghdl实验报告.docx_第1页
第1页 / 共41页
eda技术与veriloghdl实验报告.docx_第2页
第2页 / 共41页
eda技术与veriloghdl实验报告.docx_第3页
第3页 / 共41页
eda技术与veriloghdl实验报告.docx_第4页
第4页 / 共41页
eda技术与veriloghdl实验报告.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

eda技术与veriloghdl实验报告.docx

《eda技术与veriloghdl实验报告.docx》由会员分享,可在线阅读,更多相关《eda技术与veriloghdl实验报告.docx(41页珍藏版)》请在冰豆网上搜索。

eda技术与veriloghdl实验报告.docx

eda技术与veriloghdl实验报告

EDA技术与VerilogHDL

实验报告

 

学生姓名:

樊奇峰

学生学号:

所在班级:

10级电科

(2)班

实验老师:

陈亮亮

实验地点地点:

理工楼

 

实验一EDA实验箱使用

一.实验目的

1.GW48教学实验系统原理与使用介绍

2.熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。

二.实验内容

首先了解GW48系统使用注意事项以及GW48系统主板结构与使用方法,接着对各实验电路结构图特点与适用范围简述。

最后在QuartusII界面下,用文本输入和图形输入分别验证七选一多路选择器的功能。

三.程序清单

文本输入如下所示:

modulemux71(a,b,c,d,e,f,g,s,y);

inputa,b,c,d,e,f,g;

outputy;

input[2:

0]s;

regy;

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、验证输出端口波形是否达到七选一多路选择器的功能。

五、实验数据

仿真波形如下图所示。

六、实验小结

通过对EDA实验箱使用,了解了GW48教学实验系统原理与使用介绍;熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。

实验二用原理图和VerilogHDL语言设计一位全加器

一.实验目的

熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。

二.实验内容

在QuartusII下用原理图和VerilogHDL语言设计一位全加器,并编译、仿真验证其功能。

三.程序清单

全加器顶层文件设计:

半加器描述:

四.实验步骤

1、新建一个名称为f_adder的工程,并在该文件夹中新建一个的文件。

2、新建一个名称为的文件。

3、编译工程,编译成功后进行下一步,若不成功则查改错误。

4、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

5、验证输出端口波形是否实现一位全加器的功能。

五、实验数据

I、全加器仿真波形如下图所示:

II、半加器仿真波形如下图所示:

六、实验小结

通过此次实验熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。

 

实验三含异步清0和同步时钟使能的4位加法计数器

一.实验目的

熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。

二.实验内容

在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,并编译、仿真验证其功能。

三.程序清单

计数器顶层文件设计:

10进制计数器文本输入:

moduleCNT10(clk,rst,en,load,cout,dout,data);

inputclk,en,rst,load;

input[3:

0]data;

output[3:

0]dout;

outputcout;

reg[3:

0]q1;

regcout;

assigndout=q1;

always@(posedgeclkornegedgerst)

begin

if(!

rst)q1<=0;

elseif(en)

begin

if(!

load)q1<=data;

elseif(q1<9)q1<=q1+1;

elseq1<=4'b0000;

end

end

always@(q1)

if(q1==4'h9)cout=1'b1;

elsecout=1'b0;

endmodule

 

60位计数器文本输入:

moduleCNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA);

inputCLK,EN,RST,LOAD;

input[3:

0]DATA;

output[3:

0]DOUT1;

output[2:

0]DOUT2;

outputCOUT1;

outputCOUT2;

reg[3:

0]Q1;

reg[2:

0]Q2;

regCOUT1;

regCOUT2;

assignDOUT1=Q1;

assignDOUT2=Q2;

always@(negedgeCLKornegedgeRST)

begin

if(!

RST)Q1<=0;

elseif(EN)begin

if(!

LOAD)Q1<=DATA;

elseif(Q1<9)Q1<=Q1+1;

elseQ1<=4'b0000;

end

end

always@(Q1)

if(Q1==4'h9)COUT1=1'b1;

else

COUT1=1'b0;

always@(negedgeCOUT1ornegedgeRST)

begin

if(!

RST)Q2<=0;

elseif(EN)begin

if(!

LOAD)Q2<=DATA;

elseif(Q2<5)Q2<=Q2+1;

elseQ2<=4'b0000;

end

end

always@(Q2)

if((Q1==4'h9)&&(Q2==3'h5))COUT2=1'b1;

else

COUT2=1'b0;

endmodule

 

60位计数器图形输入:

四.实验步骤

1、新建一个名称为CNT10的工程,并在该文件夹中新建一个的文件。

2、编译工程,编译成功后进行下一步,若不成功则查改错误。

3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

4、验证输出端口波形是否实现异步清0和同步时钟使能的4位加法计数器的功能。

五、实验数据

10位计数器文本输入仿真波形:

60位计数器文本输入仿真波形:

60位计数器图形输入仿真波形:

六、实验小结

通过此次实验熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器

实验四8位十进制频率计设计

一.实验目的

熟悉在QuartusII下设计2位和8位十进制频率计。

二.实验内容

在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。

三.程序清单

频率计顶层文件设计:

(1)2位十进制频率计

图形输入:

图形输入:

图形输入:

文本输入:

moduleconter100(CLK,CLR,EN,cout,ge,shi);

inputCLK,EN,CLR;

output[3:

0]ge;

output[3:

0]shi;

outputcout;

regcout;

reg[3:

0]ge;

reg[3:

0]shi;

always@(posedgeCLK)

if(!

CLR)

begin

ge<=0;

shi<=0;

cout<=0;

end

elseif((ge==9)&&(shi==9))

begin

ge<=0;

shi<=0;

cout<=1;

end

elseif(ge==9)

begin

ge<=0;

shi<=shi+1;

cout<=0;

end

else

begin

ge<=ge+1;

shi<=shi;

cout<=0;

end

endmodule

文本输入:

moduletf_ctro(clk,en,clr,lock);

inputclk;

outputen,clr,lock;

regen,clr,lock;

integerd=0;

always@(posedgeclk)

begin

d<=d+1;

if(d==1)

begin

en<=0;

lock<=0;

clr<=0;end

elseif(d==2)

begin

lock<=1;

en<=0;

clr<=0;

end

elseif(d==3)

begin

lock<=0;

clr<=0;

en<=0;

end

elseif(d==6)

begin

lock<=0;

clr<=1;

en<=0;

end

elseif(d==7)

begin

lock<=0;

clr<=0;

en<=0;

end

elseif(d==8)

begin

lock<=0;

clr<=0;

en<=1;

end

elseif(d==16)

begin

d<=0;

en<=0;

lock<=0;

clr<=0;

end

end

endmodule

74374锁存器文本输入:

moduleoctal(clk,en,d_in,q_in);

inputclk,en;

input[3:

0]d_in;

output[3:

0]q_in;

reg[3:

0]Q;

assignq_in=Q;

always@(posedgeclk)

if(!

en)

begin

Q<=d_in;

end

endmodule

(2)8位十进制频率计

图形输入:

四.实验步骤

1、新建一个名称为CTR10的工程,并在该文件夹中新建一个的文件,在工程文件夹中新建一个的文件。

2、编译工程,编译成功后进行下一步,若不成功则查改错误。

3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

4、验证输出端口波形是否实现8位十进制频率计的功能。

五、实验数据

仿真波形如下图所示:

(1)2位十进制频率计

图形输入仿真波形:

文本输入仿真波形:

图形输入仿真波形输入:

图形输入仿真波形:

(2)8位十进制频率计

图形输入仿真波形

 

六、实验小结

通过本次实验熟悉在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。

实验五用状态机实现对ADC0809采样控制

一.实验目的

熟悉在QuartusII下用状态机实现对ADC0809采样控制。

二.实验内容

在QuartusII下用状态机实现对ADC0809采样控制,并编译、仿真验证其功能。

三.实验原理

四、实验程序清单

moduleADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T);

input[7:

0]D;

inputCLK,RST;

inputEOC;

outputALE;

outputSTART,OE;

outputADDA,LOCK_T;

output[7:

0]Q;

regALE,START,OE;

parameters0=0,s1=1,s2=2,s3=3,s4=4;

reg[4:

0]cs,next_state;

reg[7:

0]REGL;

regLOCK;

always@(csorEOC)begin

case(cs)

s0:

next_state<=s1;

s1:

next_state<=s2;

s2:

if(EOC==1'b1)next_state<=s3;

elsenext_state<=s2;

s3:

next_state<=s4;

s4:

next_state<=s0;

default:

next_state<=s0;

endcaseend

always@(cs)begin

case(cs)

s0:

beginALE=0;START=0;OE=0;LOCK=0;end

s1:

beginALE=1;START=1;OE=0;LOCK=0;end

s2:

beginALE=0;START=0;OE=0;LOCK=0;end

s3:

beginALE=0;START=0;OE=1;LOCK=0;end

s4:

beginALE=0;START=0;OE=1;LOCK=1;end

default:

beginALE=0;START=0;OE=0;LOCK=0;end

endcaseend

always@(posedgeCLKorposedgeRST)begin

if(RST)cs<=s0;

elsecs<=next_state;end

always@(posedgeLOCK)

if(LOCK)REGL<=D;

assignADDA=0;assignQ=REGL;

assignLOCK_T=LOCK;

endmodule

五.实验步骤

1.新建一个名称为ADC0809的工程,并在该文件夹中新建一个的文件。

2.编译工程,编译成功后进行下一步,若不成功则查改错误。

3.在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

4.验证输出端口波形是否实现用状态机实现对ADC0809采样控制

仿真波形如下图所示:

状态转换图:

 

六、实验小结

通过此次实验熟悉在QuartusII下用状态机实现对ADC0809采样控制,并编译、仿真验证其功能。

实验六交通灯设计实验

一.实验目的

熟悉在QuartusII下设计十字路口交通灯控制电路。

二.实验内容

在QuartusII下设计十字路口交通灯控制电路,并编译、仿真验证其功能。

三.实验原理

状态表:

四、实验程序清单

moduletraffic(clk,enb,accounth,account1,bccounth,bccount1,lampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4);

inputclk,enb;

output[3:

0]accounth,account1,bccounth,bccount1;

outputlampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4;

regtempa,tempb;

reg[2:

0]counta,countb;

reg[7:

0]numa,numb;

reg[7:

0]ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;

reglampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4;

assign{accounth,account1}=numa;

assign{bccounth,bccount1}=numb;

always@(enb)

if(!

enb)

begin

ared<=8'b01010101;

ayellow<=8'b00000101;

agreen<=8'b01000000;

aleft<=8'b00010101;

bred<=8'b01100101;

byellow<=8'b00000101;

bleft<=8'b00010101;

bgreen<=8'b00110000;

end

always@(posedgeclk)

begin

if(enb)

begin

if(tempa)

begin

if(numa>0)

if(numa[3:

0]==0)

begin

numa[3:

0]<=9;

numa[7:

4]<=numa[7:

4]-1;

end

else

numa[3:

0]<=numa[3:

0]-1;

if(numa==0)

tempa<=0;

end

else

begin

tempa<=1;

case(counta)

0:

begin

numa<=agreen;{lampa1,lampa2,lampa3,lampa4}<=2;counta<=1;end

1:

begin

numa<=ayellow;{lampa1,lampa2,lampa3,lampa4}<=4;counta<=2;end

2:

begin

numa<=aleft;{lampa1,lampa2,lampa3,lampa4}<=1;counta<=3;end

3:

begin

numa<=ayellow;{lampa1,lampa2,lampa3,lampa4}<=4;counta<=4;end

4:

begin

numa<=ared;{lampa1,lampa2,lampa3,lampa4}<=8;counta<=0;end

default:

{lampa1,lampa2,lampa3,lampa4}<=8;

endcase

end

end

else

begin

{lampa1,lampa2,lampa3,lampa4}<=4'b1000;

counta<=0;

tempa<=0;

end

end

always@(posedgeclk)

begin

if(enb)

begin

if(tempb)

begin

if(numb>0)

if(numb[3:

0]==0)

begin

numb[3:

0]<=9;

numb[7:

4]<=numb[7:

4]-1;

end

else

numb[3:

0]<=numb[3:

0]-1;

if(numb==0)

tempb<=0;

end

else

begin

tempb<=1;

case(countb)

0:

begin

numb<=bred;{lampb1,lampb2,lampb3,lampb4}<=8;countb<=1;end

1:

begin

numb<=bgreen;{lampb1,lampb2,lampb3,lampb4}<=2;countb<=2;end

2:

begin

numb<=byellow;{lampb1,lampb2,lampb3,lampb4}<=4;countb<=3;end

3:

begin

numb<=bleft;{lampb1,lampb2,lampb3,lampb4}<=1;countb<=4;end

4:

begin

numb<=byellow;{lampb1,lampb2,lampb3,lampb4}<=4;countb<=0;end

default:

{lampb1,lampb2,lampb3,lampb4}<=8;

endcase

end

end

else

begin

{lampb1,lampb2,lampb3,lampb4}<=4'b1000;

countb<=0;

tempb<=0;

end

end

endmodule

 

状态图:

五、.实验步骤

1.新建一个名称为traffic的工程,并在该文件夹中新建一个的文件。

2.编译工程,编译成功后进行下一步,若不成功则查改错误。

3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

4、验证输出端口波形是否实现用状态机实现对十字路口交通灯控制。

仿真波形如下图所示。

引脚分配图:

六、实验小结

通过此次实验熟悉在QuartusII下设计十字路口交通灯控制路,并编译、仿真验证其功能。

实验七简易数字时钟系统实验--------考试实验

一.实验目的

熟悉在QuartusII下设计简易数字时钟系统。

二.实验内容

在QuartusII下设计简易数字时钟系统,并编译、仿真验证其功能。

三、实验要求

(1)能正常计时

(2)有暂停键,清零键

(3)小时、分钟、秒钟可调(可加减)

(4)整点报时

四、程序清单

moduleshizhong(CLK,CLR,HOUR,MIN,SEC,EN,HOUT,SW,MODE,up);

inputCLK,EN,CLR,SW,up;

outputHOUT,HOUR,MIN,SEC;

output[3:

0]MODE;

reg[7:

0]HOUR,MIN,SEC;

regHOUT,CLK1;

reg[3:

0]MODE;

//CLK为时钟,EN为使能,也就是暂停按钮,SW为调整MODE的按钮

//UP为调整时钟的加按钮也是减按钮,当MODE为1到6为加按钮,当MODE为7到12为减按钮

//HOUT为报警器的控制

always@(CLKorup)//UP是时分秒加减按钮,在MODE1到6为加,7到12为减

begin

if(MODE==0)CLK1<=CLK;//**MODE0为时钟自动走,其他MODE为暂停调整时钟

elseCLK1<=up;

end

always@(posedgeSW)//********调整模式,范围为模式1到模式12

begin

if(SW)

begin

MODE<=MODE+1;

if(MODE>12)MODE<=0;

end

end//********

always@(posedgeCLK1orposedgeCLR)

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((SEC[3:

0]==9)&&(SEC[7:

4]==5)&&(MIN[3:

0]==9)&&(MIN[7:

4]==5)&&(HOUR[3:

0]==3))//**当分为59,秒为59且时为的个位为3时,将进行下一部判断

begin

if(HOUR[7:

4]==2)//**当分为59,秒为59且时为23时,下一秒清零,且报警

begin

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

当前位置:首页 > IT计算机

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

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