含异步清零和同步时钟使能的加法计数器设计
vhdl加法计数器
6、编写一个4位加法计数器VHDL源程序,要求:复位信号reset低电平清零,变高后在clk上升沿开始工作,输入时钟信号为clk,输出为q。(以十二进制为例)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY counter IS
PORT(clk,reset:IN STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY priorityencoder
ARCHITECTURE rtl OF counter IS
SIGNAL count: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
q<=cout;
PROCESS(clk,reset)IS
BEGIN
IF(reset=’0’)THEN
cout<="0000";
ELSIF(clk’EVENT AND clk=’1’)THEN
IF(cout="1011")THEN
cout<="0000"
ELSE
cout<=cout+’1’;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE rtl;
4位二进制并行加法器的源程序ADDER4B.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER4B IS --4位二进制并行加法器PORT(CIN:IN STD_LOGIC;--低位进位
实验九 复杂可编程逻辑器件CPLD的使用
实验九 复杂可编程逻辑器件CPLD 的使用
一、实验目的
1.掌握利用Quartus II 9.1软件进行数字电子系统设计开发的基本方法;
2.掌握CPLD 的基本使用方法;
3.掌握利用CPLD 设计数字电子系统的方法。
二、预习要求
1.复习复杂可编程逻辑器件CPLD 的基本概念和基本技术;
2.复习Quartus II 9.1的基本操作;
3.复习VHDL 语言的基本使用;
4.复习全加器的工作原理和实现方法;
5.复习7段LED 数码管的动态扫描显示电路的工作原理;
6.复习含异步清零和同步使能的加法计数器的工作原理和实现方法;
7.设计一个简易数字钟电路。
三、实验仪器
计算机;稳压电源;Quartus II 软件;EPM7128硬件实验板。
四、实验内容、原理与步骤
内容一 利用EPM7128实现加法器
实验内容:用Quartus II 实现一个全加器的设计、编译和仿真。
实验原理:全加器和半加器的逻辑构成 半加器:B A B A B A S ⋅+⋅=⊕=,B A C ⋅=
全加器:⎩⎨⎧+=+=⊕+=⊕=⊕⊕=----b a i a a i i i i i i
i a i i i i C C C S C C B A B A C C S C B A S 1111)( 故,两个半加器(A i 、B i →S a 、C a 与S a 、C i-1→S b 、C b )和一个或门(C a 、C b →C i )可
组成一个全加器(A i 、B i 、C i-1→S i 、C i )
。
实验步骤:
1.新建一个Quartus II工程
FPGA实验报告实验
西南科技大学
实验报告
课程名称:基于FPGA的现代数字系统设计
实验名称:基于HDL十进制计数、显示系统设计姓名:
学号:
班级:通信1301
指导教师:刘桂华
西南科技大学信息工程学院制
基于HDL十进制计数、显示系统设计
一、实验目的
1、掌握基于语言的ISE 设计全流程;
2、熟悉、应用VerilogHDL描述数字电路;
3、掌握基于Verilog的组合和时序逻辑电路的设计方法;
4、掌握chipscope 片内逻辑分析仪的使用与调试方法。
二、实验原理
1、实验内容:设计具有异步复位、同步使能的十进制计数器,其计数结
果可以通过七段数码管、发光二极管等进行显示。
2、模块端口信号说明:
输入信号:
Clk_50m ---系统采样时钟
clk -------待计数的时钟
clr ---------异步清零信号,当clr=0,输出复位为0,当clr=1,
正常计数
ena---------使能控制信号,当ena=1,电路正常累加计数,否
则电路不工作
输出信号:
q[6:0]---------驱动数码管,显示计数值的个位
cout -----------1bit 数据,显示计数值向十位的进位
COM-----------共阳级数码管,公共端(接地,参考开发板原理
图
3、以自顶向下的设计思路进行模块划分:
整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按键为实现硬件防抖,则需要将按键输入的时钟clk,先通过消抖模块消抖后,再输出至后续使用。
1)十进制计数器模块设计
输入: CLK -------待计数的时钟
CLR ---------异步清零信号,当CLR =0,输出复位为0,当CLR =1,正常计数。
实验二-异步清零和同步使能的4位计数器
西南科技大学实验报告
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;
EDA实验报告
湖北民族学院信息工程学院实验报告
(电气、电子类专业用)
班级: 09 姓名:周鹏学号:030940908 实验成绩:
实验地点: EDA实验室
课程名称:数字系统分析与设计实验类型:设计型
实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计
实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。
一、实验目的
1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
4、了解格雷码变换的原理。
5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。
6、进一步掌握实验系统的使用。
二、实验原理、原理图及电路图
3-8译码器三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。其真值表如表1-1所示
输入输出
A B C D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
EDA实习报告 非常详细
实验一组合电路的设计
1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:
library ieee;
use ieee.std_logic_1164.all; entity mux21a is
port(a,b,s:in std_logic;
y:out std_logic); end entity mux21a; architecture one of mux21a is begin
y<=a when s='0' else b ; end architecture one ;
4. 仿真波形(如图1-1所示)
图1-1 2选1多路选择器仿真波形
5. 试验总结:
从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。
实验二时序电路的设计
1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。
2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity suocun7 is
port(clk: in std_logic;
en: in std_logic;
EDA试题
1.wire型变量与reg型变量有什么本质区别?它们可以用于什么类型语句中?
2.阻塞赋值与非阻塞赋值有何区别?
1.用Verilog设计一个3-8译码器。
2.设计一个异步清0,同步时钟使能和异步数据加载型8位二进制加法计数器。参考例3-22
module CNT10(clk,rst,en,load,cout,dout,data);
input clk,en,rst,load;
input [3:0] data;
output[3:0] dout;
output cout;
reg [3:0] q1; reg cout;
assign dout=q1;
always@(posedge clk or negedge rst or negedge load) begin
if(!rst) q1<=0;
else if(!load) q1<=data;
else if(en) begin
if (q1<9) q1<=q1+1;
else q1<=4'b0000;
end end
always@(q1)
if(q1==4'h9) cout=1'b1;
else cout=1'b0;
endmodule
3.设计一个功能类似74LS160的计数器。
4.设计一个含有异步清零和计数使能的16位二进制加减可控计数器的Verilog HDL描述。
5.设计七人表决器。
module voter7(pass,vote);
output pass;input [6:0] vote;
reg pass;reg [2:0] sum;
always @(vote)
加法计数器电路设计
加法计数器电路设计需要考虑多个因素,包括输入信号、计数器状态、计数规则等。以下是一个简单的加法计数器电路设计的步骤:
1. 确定计数器的位数:根据需要计数的最大值和最小值,确定计数器的位数。例如,如果要计数的范围是0到99,则可以选择一个3位的二进制计数器。
2. 确定计数器的状态:根据确定的位数,确定计数器的所有可能状态。例如,对于一个3位的二进制计数器,有8个可能的状态:000、001、010、011、100、101、110、111。
3. 确定计数规则:根据计数器的状态和输入信号,确定计数器的计数规则。例如,对于一个3位的二进制加法计数器,可以采用逢十进一的规则,即当计数器的值达到最大值(111)时,下一个输入信号会使计数器的值回绕到最小值(000)。
4. 设计电路:根据上述步骤,设计加法计数器电路。可以采用门电路、触发器等电子元件来构成加法计数器。在设计过程中,需要考虑电路的稳定性和可靠性,以及尽量减小功耗和减小体积等问题。
5. 仿真和测试:使用仿真软件对设计的加法计数器电路进行仿真和测试,以确保其功能正确性和性能可靠性。
总之,加法计数器电路设计需要综合考虑多个因素,并采用合适的电子元件和设计方法来实现。
含异步清零和同步时钟使能的加法计数器设计
广州大学学生实验报告
实验室:电子信息楼 317EDA 2017 年 9月 18 日
学院机电学院年级、专
业、班
电信
151
姓名苏伟强学号51
实验课
程名称
可编程逻辑器件及硬件描述语言成绩
实验项
目名称
实验2 含异步清零的同步时钟使能控制的加法计数器指导老师秦剑
一实验目的
a)学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术;
二实验原理
图是一含计数使能、异步复位的4位加法计数器,例2-1是其VHDL描述。图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3:0]是4位数据输入端。当ENA为‘1’时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为‘0’时保持上一次的输出。三实验设备
a)FPGA实验箱,Cyclone III EP3C40Q24C08
四实验内容和结果
a)编程
根据实验原理编程VHDL,rst是异步清信号,高电平有效;clk是锁存信号;CQ[3:0]是计数输出端,COUT 是进位输出。上升沿计数,在计数到1111的时候进位(这里判断CQI的所有位为1时进位,表示计数到top 值),清零,继续计数,将进位数据锁存在COUT端,不断更新。可以看到在进程中,首先判断rst信号是否为1,为1的话进行置位,优先级最高而且不受时钟信号控制(放在以时钟边沿测试表述clock’event and clock=’1’为条件语句的if语句以外),是异步置位。
b)波形仿真
新建波形仿真文件,文件名和实体名称保持一致,可以看到,使能信号为1,在时钟信号的上升沿计数加一,如果有置位信号,则产生异步置位(置位最优先),计数到1111top值,进位并且自动清零,符合设计。
设计含异步清零和同步时钟使能的加法计数器.doc
设计含异步清零和同步时钟使能的加法计数器.doc
加法计数器是一种常见的数字电路,它可以用于计数器、频率分频等应用。本文将介绍一种具有异步清零和同步时钟使能的加法计数器的设计方法。
一、电路原理
加法计数器由若干个触发器组成,每个触发器的输出连接到下一个触发器的时钟端。当计数器接受到一个时钟信号时,每个触发器的状态将根据前一个触发器的状态和时钟信号发生变化,从而实现计数的功能。
本文介绍的加法计数器还包含了异步清零和同步时钟使能功能,它们分别被连接到清零端和时钟端。当清零端接受到一个高电平信号时,计数器的状态将被清零;当时钟端接受到一个高电平信号时,计数器将在时钟上升沿时计数。
二、电路实现
本文中的加法计数器由4个D触发器和一些逻辑门组成,如图所示。
其中,D触发器的输入资源于四个运算器之中,运算器分别为。
①.异或门(XOR):将A,B两个数字按位异或,当两个输入不同时,输出为1;当两个输入相同时,输出为0。
②.与非器(NAND):将AB两个输入同时取反再进行与运算,输出为非AB的结果。
在加法计数器中,D触发器的输入端连接到异或门,异或门的两个输入端分别连接到计数器输入和进位信号。同时,计数器输出也会连接到一个4位数显。逻辑门的输出信号会被连接到触发器的时钟控制端或清零控制端,从而实现对计数器状态的控制。
三、时序分析
1.异步清零
当异步清零端接受到一个高电平信号时,计数器的状态将被清零。具体来说,所有触发器的输出都将被强制为低电平信号。这种操作可以通过将清零信号连接到每个D触发器的清零输入实现。
EDA实验报告
实验一:QUARTUS II 软件使用及
组合电路设计仿真
实验目的:
学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL 源文件的设计和波形仿真等基本内容。
实验内容:
1.四选一多路选择器的设计
基本功能及原理:
选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)和s(1)及一个信号输出端y。当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。
逻辑符号如下:
程序设计:
软件编译:
在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:
仿真结果如下图所示
分析:
由仿真图可以得到以下结论:
当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。符合我们最开始设想的功能设计,这说明源程序正确。
2.七段译码器程序设计
基本功能及原理:
七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。本项实验很容易实现这一目的。输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
EDA试题题库及参考答案
一、选择题:(20分)
1.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是:___D__
A. CPLD是基于查找表结构的可编程逻辑器件
B. CPLD即是现场可编程逻辑器件的英文简称
C. 早期的CPLD是从FPGA的结构扩展而来
D. 在Xilinx公司生产的器件中,XC9500系列属CPLD结构
2.基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:_________D
A.①②③④ B.②①④③C.④③②①D.②④③①
3.下面对利用原理图输入设计方法进行数字电路系统设计,哪一种说法是正确的:__________B
A.原理图输入设计方法直观便捷,很适合完成较大规模的电路系统设计
B.原理图输入设计方法多用于较规范、规模不大的电路设计,和HDL代码描述方法均可以被综合,相得益彰
C.原理图输入设计方法无法对电路进行功能描述
D.原理图输入设计方法不适合进行层次化设计
4.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是:_______D
A.PROCESS为一无限循环语句
B.敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动
C.当前进程中声明的变量不可用于其他进程
D.进程由说明语句部分、并行语句部分和敏感信号参数表三部分组成
5.对于信号和变量的说法,哪一个是不正确的:_________A
A.信号用于作为进程中局部数据存储单元
B.变量的赋值是立即完成的
加法计数器
KX
康芯科技
计数溢出信号
将计数器设计文件烧 写到实验板上FPGA的 写到实验板上 的 配置器件EPCS中, 配置器件 中 实现掉电保护
文件设置
KX
康芯科技
AS编程模式
选择EPCS1
选择POF文件为压缩文件
关闭SignalTapII,从设计中删除此模块 , 关闭
KX
康芯科技
禁止使用SignalTapII
康芯科技
注意,耗用的逻辑宏单元数增加到313个
下载并启动含有SignalTapII的计数器文件 的计数器文件 下载并启动含有
先点击这里 再点击这里,启动采样!使连续采样
KX
康芯科技
用此键扫描,了解与实验板的连接情况
实验板上FPGA的型号
下载文件于实验板上的FPGA
通过实验系统上FPGA的JTAG口测的计数器计数的实时信号波形 的 通过实验系统上 口测的计数器计数的实时信号波形
注意下载文件与路径
擦除
空白检查 编程!
校验!
给出器件ID号 启动FPGA,进入正常工作!
设计含异步清0和同步时钟使能的加法计数器 设计含异步清 和同步时钟使能的加法计数器
程序设计与硬件实验
设计含异步清0和同步时钟使能的加法计数器 设计含异步清 和同步时钟使能的加法计数器
KX
康芯科技
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) 检测是否允许计数( 检测是否允许计数 同步使能) IF CQI < 9 THEN CQI := CQI + 1; --允许计数 检测是否小于 允许计数, 允许计数 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于 ,计数值清零 大于9, 大于 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1'; --计数大于 ,输出进位信号 计数大于9, 计数大于 ELSE COUT <= '0'; END IF; CQ <= CQI; --将计数值向端口输出 将计数值向端口输出 END PROCESS; END behav;
EDA程序设计试题及答案
1.请画出下段程序的真值表,并说明该电路的功能。
LIBRARY ieee;
USE ieee。std_logic_1164。all;
ENTITY aaa IS
PORT( oe,dir :IN STD_LOGIC ;
a,b :INOUT STD_LOGIC_VECTOR(7 DOWNTO 0 );
END aaa ;
ARCHITECTURE ar OF aaa IS
BEGIN
PROCESS(oe , dir )输入输出
BEGIN a1 a0 x3 x2 x1 x0 IF oe=’0' THEN a〈=”zzzzzzzz”;b〈="zzzzzzzz”; 0 0 0 0 0 1 ELSIF oe=’1’THEN 0 1 0 0 1 0 IF dir='0’THEN b<=a; 1 0 0 1 0 0
ELSIF dir=’1’THEN a〈=b; 1 1 1 0 0 0
ENDIF;
END IF ;
END PROCESS ;
END ar ;
功能为:2-4译码器…………………………………………。。4分
2.请说明下段程序的功能,写出真值表,并画出输入输出波形。
LIBRARY ieee;
USE ieee。std_logic_1164。all;
USE ieee。std_logic_arith.all;
USE ieee。std_logic_unsigned.all;
ENTITY aaa IS
PORT( reset,clk:IN STD_LOGIC;
q: BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0)
EDA技术实验报告
EDA技术实验报告
实验⼀利⽤原理图输⼊法设计4位全加器
⼀、实验⽬的:
掌握利⽤原理图输⼊法设计简单组合电路的⽅法,掌握MAX+plusII 的层次化设计⽅法。通过⼀个4位全加器的设计,熟悉⽤EDA 软件进⾏电路设计的详细流程。⼆、实验原理:
⼀个4位全加器可以由4个⼀位全加器构成,全加器的进位以串⾏⽅式实现,即将低位加法器的进位输出cout 与相邻的⾼位加法器的低位进位输⼊信号cin 相接。
1位全加器f-adder 由2个半加器h-adder 和⼀个或门按照下列电路来实现。
半加器h-adder 由与门、同或门和⾮门构成。
四位加法器由4个全加器构成
三、实验内容:
1. 熟悉QuartusII 软件界⾯,掌握利⽤原理图进⾏电路模块设计的⽅法。 QuartusII 设计流程见教材第五章:QuartusII 应⽤向导。
2.设计1位全加器原理图
(1)⽣成⼀个新的图形⽂件(file->new->graphic editor )(2)按照给定的原理图输⼊逻辑门(symbol ->enter symbol)
CO
CO 1S 2
S 3
S 4
(4)为管脚和节点命名:
在管脚上的PIN_NAME处双击⿏标左键,然后输⼊名字;
选中需命名的线,然后输⼊名字。
(5)创建缺省(Default)符号:
在File菜单中选择Create Symbol Files for Current File项,即可创建⼀个设计的符号,该符号可被⾼层设计调⽤。
3.利⽤层次化原理图⽅法设计4位全加器
(1)⽣成新的空⽩原理图,作为4位全加器设计输⼊
设计含异步清零和同步使能的加法计数器
实验二设计含异步清零和同步使能的加法计数器
1.实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
2.实验内容或原理
在Quartus II 上对源程序进行编辑、编译、综合、适配、仿真。说明源程序各语句的作用,详细描述其功能特点,给出其所有信号的时序仿真波形。RST为异步清零信号,高电平有效;CLK是锁存信号;EN为计数使能信号。当时钟信号CLK、复位信号RST或时钟使能信号EN中任一信号发生变化,都将启动进程语句PROCESS。此时如果RST为‘1’,将对计数器清零,即复位,这项操作是独立于CLK的,因而称异步。
3.实验仪器
(1)GW48系列SOPC/EDA实验开发系统
(2)配套计算机及Quartus II 软件
4.实验步骤
(1)完成含异步清零和同步使能的加法计数器的VHDL描述,并对其进行波形仿真,确定结果正确。
(2)建议选择实验电路模式5对该设计进行硬件验证。
5. VHDL仿真实验
(1)为此工程新建一个文件夹。启动QuartusII软件工作平台,新建工程设计文件名为CNT10.vhd。在新建的VHDL模型窗口下编写源程序代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN: IN STD_LOGIC;
CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT: OUT STD_LOGIC);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广州大学学生实验报告
实验室:电子信息楼 317EDA 2017 年 9月 18 日
学院机电学院年级、专
业、班
电信
151
姓名苏伟强学号1507400051
实验课
程名称
可编程逻辑器件及硬件描述语言成绩实验项
目名称
实验2 含异步清零的同步时钟使能控制的加法计数器指导老师秦剑一实验目的
a)学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术;
二实验原理
图是一含计数使能、异步复位的4位加法计数器,例2-1是其VHDL描述。图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3:0]是4位数据输入端。当ENA为‘1’时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为‘0’时保持上一次的输出。
三实验设备
a)FPGA实验箱,Cyclone III EP3C40Q24C08
四实验内容和结果
a)编程
根据实验原理编程VHDL,rst是异步清信号,高电平有效;clk是锁存信号;CQ[3:0]是计数输出端,COUT 是进位输出。上升沿计数,在计数到1111的时候进位(这里判断CQI的所有位为1时进位,表示计数到top 值),清零,继续计数,将进位数据锁存在COUT端,不断更新。可以看到在进程中,首先判断rst信号是否为1,为1的话进行置位,优先级最高而且不受时钟信号控制(放在以时钟边沿测试表述clock’event and clock=’1’为条件语句的if语句以外),是异步置位。
b)波形仿真
新建波形仿真文件,文件名和实体名称保持一致,可以看到,使能信号为1,在时钟信号的上升沿计数加一,如果有置位信号,则产生异步置位(置位最优先),计数到1111top值,进位并且自动清零,符合设计。
c)引脚锁定和硬件调试
进入assignmen->assignment edit,category选择location,alt+1调出node finder,调出信号进行引脚绑定,引脚绑定的时候注意查看芯片引脚手册。如图为引脚锁定。选实验电路模式5,用键8(PIO7)控制RST;用键7(PIO6)控制ENA;计数溢出COUT接发光管D8(PIO15);OUTY是计数输出接数码1(PIO19-PIO16,低位靠右);时钟CLK接clock2(引脚号为54),通过跳线选择4Hz信号.下载到开发板中,可以看到,数码管在跳变,从0跳变到F,按键8可以进行置位,实验中如果接时钟信号频率过高,则没办法观察到明显的数码管显示。
d)RTL图观察
Tool->netlist viewers->RTL viewer观察RTL图。
分析:由图可见4位假发计数器由两大部分组成。第一是完成加一操作的存组合逻辑电路加法器。它右端输出的数始终比左端的数多1000,则输出为1001。第二是4位边沿触发方式锁存器。这是一个纯时序电路,计数信号CLK实际上是其锁存的信号。另外,在输出端还有一个反馈通道,它一方面将锁存器中的数据向外输出,一方面将此信号反馈回加一器,以作为下一次累加的基数。同时也发现输出接一个4位与门实现进位输出1。
e)思考题
i.是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即: CQ <= CQ + 1 ?为
什么?
答:不能,因为CQ定义为out型数据,意思就是说CQ只能用于输出,然而,题目中给出的假设,CQ <= CQ + 1 ,在,=符号的两端都出现了CQ,表明CQ应当具有输入和输出两种端口模式特性,同时它的输入特性应该是具有反馈方式,即赋值符号“<=”右边的CQ来自左边的CQ的反馈,显然如果要这样的话,CQ的度端口模式为Buffer更为吻合。但是,表面上buffer具有双向端口inout的功能,但实际上其输入功能是不完整的,它只能将自己的输出的信号反馈回来,这并不意味着他具有输入功能。由于CQ1是内部信号,不必像端口信号那样需要定义他们的端口模式,即CQ1的数据流动方向是不受限制的。因此可以在CQ1<=CQ1+1(这里的+是重载的运算符)中用信号CQ1来完成累加的任务,然后累加的结果用语句CQ<=CQ1向端口Q输出。
五实验分析总结
a)在VHDL表述的时序模块中有这样的规律,一般的,凡是独立于时钟的异步控制信号都放在以
时钟边沿测试表述clock’event and clock=’1’为条件语句的if语句以外,如异步复位信号,凡是依赖于时钟有效性的同步控制信号则放在边沿测试表述以内,如时钟使能信号。
b)实验中如果时钟信号接高频率信号,则很难观察到计数的数码管显示,需要把技术的时钟频率降
下来,才能看到很明显的数码管跳变。
c)详细的过程描述,实验过程中已经有详细给出。