课程名称:
实验项目:
实验地点:矿院楼二层
专业班级:电子信息工程 学号:
学生姓名:
本科实验报告
CPLD/FPGA应用设计 4位加法计数器 EDA实验室 1101班 年月日
实验八 4位加法计数器
一、实验目的
1.学习时序电路的VHDL描述方法。
2.掌握时序进程中同步、异步控制信号的设计。 3.熟悉EDA的仿真分析和硬件测试技术。 二、实验内容
1、编写4位二进制加法计数器的VHDL程序。 2、在QuartusⅡ上对加法计数器进行仿真。
3、将输入引脚连接到拨码开关,时钟输入锁定到相应频率的时钟信号,输出连接到发光二极管,下载后在实验板上验证其功能,记录实验结果。 三、实验仪器
软件:windows xp QuartusⅡ6.0 硬件:实验板 四、实验原理
设计一个含计数使能、异步复位和并行预置功能的4位加法计数器,RST是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为“1”'时,加法计数,COUT为计数进位输出,OUTY为计数输出。
VHDL程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4B IS
PORT(CLK:IN STD_LOGIC; RST:IN STD_LOGIC; ENA:IN STD_LOGIC;
OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC); END CNT4B;
ARCHITECTURE BEHAV OF CNT4B IS
SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
P_REG:PROCESS(CLK,RST,ENA,CQI) BEGIN
IF RST='1'THEN CQI<=\
ELSIF CLK'EVENT AND CLK='1'THEN IF ENA='1'THEN CQI<=CQI+1; END IF; END IF; OUTY <= CQI; END PROCESS P_REG;
COUT<=CQI(0)AND CQI(1) AND CQI(2) AND CQI(3); END BEHAV;
五、实验步骤
1、VHDL文本编辑
在QuartusⅡ6.0集成环境下,执行“file”中的“new”命令,弹出编辑文本类型的对话框,选择“Device Design file”- “VHDL File”后单击“OK”。
先采用VHDL文本输入设计法实现4位二进制加法计数器的数字逻辑电路,并将文件CNT4B.vhd保存在创建的目录下。
2、编译设计图形文件
对CNT4B.vhd设计文件进行编译,进而实现四位同步二进制加法计数器的数字逻辑电路
3、功能仿真、时序仿真
4、引脚锁定,下载及硬件测试 六、实验结果
1、源程序输入
2、RTL仿真
Add0CQI[3..0]A[3..0]4' h1 --B[3..0]PREOUT[3..0]DQCOUT~2COUTENAADDERCLRRSTCLKENAOUTY[3..0] 3、波形仿真
4、引脚分配
七、实验总结
1、在上述程序中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即 : OUTY <= OUTY + 1 ?
答:不可以,因为信号OUTY定义的端口模式是OUT,是单向输出模式,所以只能作为输出信号,不能在结构体内再用来作为输入信号;而且 VHDL里面规定输出端口不能做为赋值来用,而OUTY<=OUTY+1,就把OUTY当成赋值来用了
2、修改程序,用进程语句和IF语句实现进位信号count的输出。
if CQI (3)= ' 1'; then 答:process(CQI)
Begin Cout<=' 1'; If CQI(0)= ' 1' then End if if CQI(1)= ' 1'; then End process
if CQI(2)= ' 1';then 3、实验感想 。