西南科技大学
实验报告FPGA现代数字系统设计
实验题目:含异步清零和同步使能的4位加法计数器专业班级:
学生姓名:
学生学号:
实验时间:
指导教师:
实验二含异步清0和同步使能的4位加法计数器
一、实验目的:
学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL技术。
二、原理说明:
图2.1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,例2.1是其VHDL描述。
由图2-1所示,
4位锁存器;
rst是异步清0信号,高电平有效;
clk是锁存信号;
D[3..0]是4位数据输入端。
ENA是使能信号,当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。
图2-1含计数使能、异步复位和计数值并行预置功能4位加法计数器
三、实验内容:
1、在QuartusII上对例2-1进行编辑、编译、综合、适配、仿真。
说明例中各语句
的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
【例2-1】
module CNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);//端口声明
input CLK,RST,ENA;
output CLK_1,RST_1,ENA_1;
output[3:0] OUTY;
output COUT;
reg[3:0] OUTY;
reg COUT;//寄存器变量OUTY,位宽为1
wire CLK_1;
wire RST_1;
wire ENA_1;
assign CLK_1 = CLK;
assign RST_1 = RST;
assign ENA_1 = ENA;
always@(posedge CLK or negedge RST) /*当CLK上升沿或者RST上升沿时,触发always模块执行*/
begin
if(!RST)
begin
OUTY<=4'b0000;
COUT<=1'b0;/*当复位信号等于0时,计数OUTY、COUT置0*/
end
else
if(ENA) /*当使能信号为1时,计数器计数工作*/
begin
OUTY<=OUTY+1;
COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3]; /*计数显示*/
end
end
endmodule
2保存计数器程序为CNT4B.vhd,进行功能仿真、全编译、时序仿真,如出现错误请按照错误提示进行修改,保证设计的正确性。
3锁定引脚
pin location DE2上的名称
ENA PIN_N25SW[0]
CLK PIN_G26KEY0
RST PIN_N23KEY1
OUTY[0]PIN_AC21LEDR[7]
OUTY[1]PIN_AA14LEDR[8]
OUTY[2]PIN_Y13LEDR[9]
OUTY[3]PIN_AA13LEDR[10]
COUT PIN_Y12LEDG[8]
CLK_1PIN_AE22LEDG[0]
RST_1PIN_AF22LEDG[1]
ENA_1PIN_AE23LEDR[0]
4下载
采用JATG方式进行下载,通过ENA,CLK,RST输入,观察的LEDR[0],LEDR[7],LEDR[8],LEDR[9],LEDR[10],LEDG[0],LEDG[1],LEDG[8]亮灭验证计数器的
逻辑功能。
5使用SIGNALTAP II对CNT4B计数器中的COUT, OUTY进行实时测试。
四、实验结果与分析
功能仿真:
时序编译:
时序仿真:
下载情况:
最终结果:
五、思考题
1、改写例2-1,用两个always语句实现模块功能?
答:module CNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);
input CLK,RST,ENA;
output CLK_1,RST_1,ENA_1;
output[3:0] OUTY;
output COUT;
reg[3:0] OUTY;
reg COUT;
wire CLK_1;
wire RST_1;
wire ENA_1;
assign CLK_1 = CLK;
assign RST_1 = RST;
assign ENA_1 = ENA;
always@(posedge CLK or negedge RST)
begin
if(!RST)
begin
OUTY<=4'b0000;
COUT<=1'b0;
end
else
OUTY= OUTY+1;
always@(OUTY)
if(ENA)
begin
OUTY<=OUTY+2’b1;
COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3];
end
end
assign COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3];
endmodule
2、逻辑分析仪的功能是什么?它在FPGA设计中的作用是什么?简述SIGNALTAP II的使用流程。
答:逻辑分析仪可以监测硬件电路工作时的逻辑电平(高或低),并加以存储,用图形的方式直观地表达出来,便于用户检测,分析电路设计(硬件设计和软件设计) 中的错误。
逻辑分析仪在FPGA的作用主要是用于调试。
SIGNALTAP II的使用流程:设计人员在完成设计并编译工程后,建立SignalTap II (.stp)文件并加入工程、配置STP文件、编译并下载设计到FPGA、在Quartus II软件中显示被测信号的波形;在测试完毕后将该逻辑分析仪从项目中删除。