杭州电子科技大学EDA第二次实验报告.docx
《杭州电子科技大学EDA第二次实验报告.docx》由会员分享,可在线阅读,更多相关《杭州电子科技大学EDA第二次实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
杭州电子科技大学EDA第二次实验报告
杭州电子科技大学EDA实验报告
第二次实验报告
班级:
140475**
学号:
1404******
姓名:
***
实验一:
计数器设计实验
实验目的:
熟悉QuartusII的Verilog文本设计流程全过程,学习计数器的设计、仿真和硬件测试,掌握原理图和文本设计方法。
实验原理:
参考节。
实验电路如图5-28所示,设计流程参考本章。
实验任务:
在QuartusⅡ上对基于实验电路图的工程进行编辑、编译、综合、仿真。
说明模块中各语句的作用。
根据各模块和所有信号的时序仿真波形,详细描述此设计的功能特点。
从时序仿真图和编译报告中了解计数时钟输入至计数数据输出的延时情况,包括设定不同优化约束后的改善情况。
用例化语句,按上图连接成顶层设计电路。
最终完成能实现上图结构的Verilog文件设计,并对其进行仿真。
实验内容:
建立一个Verilog文件,输入以下代码,保存为。
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
RTl电路图如下
仿真波形如下
波形分析:
该文件实验了十进制计数器的功能。
由图可见,在时钟每出现一个上升沿,输入数值逐个增加,由0计数到9之后再从0开始循环。
当RST出现一个下降沿时,则置零,输出数值变为零。
当计数器计到9时,COUT出现一个高电平表示进位。
当时钟有效且LOAD为低电平有效时,置数,输出值为输入的DATA值。
(2)建立一个Verilog文件,保存为,代码如下。
moduleDECL7S(A,LED7S);
input[3:
0]A;
output[6:
0]LED7S;
reg[6:
0]LED7S;
always@(A)
case(A)
4'b0000:
LED7S<=7'b0111111;
4'b0001:
LED7S<=7'b0000110;
4'b0010:
LED7S<=7'b1011011;
4'b0011:
LED7S<=7'b1001111;
4'b0100:
LED7S<=7'b1100110;
4'b0101:
LED7S<=7'b1101101;
4'b0110:
LED7S<=7'b1111101;
4'b0111:
LED7S<=7'b0000111;
4'b1000:
LED7S<=7'b1111111;
4'b1001:
LED7S<=7'b1101111;
4'b1010:
LED7S<=7'b1110111;
4'b1011:
LED7S<=7'b1111100;
4'b1100:
LED7S<=7'b0111001;
4'b1101:
LED7S<=7'b1011110;
4'b1110:
LED7S<=7'b1111001;
4'b1111:
LED7S<=7'b1110001;
default:
LED7S<=7'b0111111;
endcase
endmodule
RTL电路图如图所示
仿真波形如下图所示
(3)建立一个Verilog文件,用例化语句将实验原理图连接出来,保存为。
代码如下
moduleCNT2LED(clk,rst,en,load,data,dout,led,cout);
inputclk,rst,en,load;
input[3:
0]data;
output[3:
0]dout;
output[6:
0]led;
outputcout;
CNT10U1(clk,rst,en,load,cout,dout,data);
DECL7SU2(dout,led);
Endmodule
实验分析:
由上图编译通过后的波形可看出,本次实验成功将实验原理电路图的功能实现了。
当rst=0时,输出清零。
输出从0计到9,led输出数值相对应的值,当load出现低电平,且适中有效时(上升沿有效),输出数值为预置数值9;当load出现低电平,但时钟信号无效时,输出数值不变。
当计数计到9时,cout输出信号为高电平。
实验二模可控计数器设计
(1)建立一个Verilog文件,保存为,代码如下
modulecount8(CLK,RST,D,PM,DOUT);
inputCLK,RST;
input[7:
0]D;
outputPM;
output[7:
0]DOUT;
reg[7:
0]Q1;
regFULL,PM,cnt2;
(*synthesis,keep*)wireLD;
always@(posedgeCLKornegedgeRST)
if(!
RST)begin
Q1<=0;
FULL<=0;
end
elseif(LD)begin
Q1<=D;
FULL<=1'b1;
end
elsebeginQ1<=Q1+1;FULL<=1'b0;end
assignLD=(Q1==8'hff);
assignDOUT=Q1;
always@(posedgeFULL)
begin
cnt2=~cnt2;
if(cnt2==1'b1)
PM=1'b1;
elsePM=1'b0;
end
endmodule
RTL电路图如下
仿真波形如下图
实验分析:
当计数计到FF时,LD输出一个高电平,输出变为预置数EE,计数器在下一时钟输出标志脉冲FULL,PM由0变为1;等到下一次LD输出高电平时,输出仍变为预置数,计数器仍在下一时钟输出标志脉冲FULL,PM由1变为0;以此类推。
由图(b)可以清楚地看出PM与FULL为二分频的关系,在一个PM周期中,FULL出现两次高电平。
在图(b)中还可以清楚地看出,当预置数越大时,输出的PM频率越高。