含异步清零和同步时钟使能的加法计数器设计

合集下载

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五 含异步清零和同步使能4位加法计数器的VHDL设计

实验五含异步清零和同步使能4位加法计数器的VHDL设计一、实验目的1掌握计数器的VHDL设计方法;2掌握异步复位和同步复位和使能的概念;3掌握寄存器性能的分析方法(即分析芯片所能达到的最高时钟频率)。

二、实验内容1异步复位4位加法计数器的设计;2同步复位4位加法计数器的设计。

3异步清0和同步时钟使能的4位加法计数器三、实验原理复位:给计数器一个初值叫复位,如果所给初值为0,则称复位为清零。

异步复位:复位跟时钟无关,只要复位信号的复位电平出现,计数器立即复位,如图5-1所示;同步复位:复位跟时钟有关,当复位信号的复位电平出现时,计数器并不立即复位,而是要等到时钟沿到来时才复位,如图5-2所示。

异步复位4位加法计数器的VHDL设计代码见教材P122-P123,仿真波形如图5-3所示。

同步复位4位加法计数器的VHDL部分代码如下,仿真波形如图5-4所示。

.图5-1异步复位图5-2同步复位图5-3异步复位计数器仿真波形图5-4同步复位计数器仿真波形四、实验步骤(一)异步复位4位加法计数器的设计1建立一个设计工程,工程名为CNT4B;2打开文本编辑器,建立一个VHDL设计文件,其VHDL代码见教材P164中的例6-20,文件名存为CNT4B.VHD。

注意文件的扩展名要选为.vhd,而且要求工程名、文件名和设计实体名必须相同。

3选器件:ACEX1K,EP1K30TC144-3(旧)或Cyclone,EP3C40Q240C8目标芯片。

4编译;5建立波形文件,然后保存,其文件名必须与工程名一致;【波形设置:①设置仿真时间为10us:②设置输入信号的波形:时钟周期设置为200ns,其他输入信号的波形设置参看图6-3。

】6仿真,观察输出波形是否正确;7时序分析:分析芯片所能达到的最高时钟频率。

【打开时序分析器,然后执行菜单命令:analysis/register performance/start,可以看到最高时钟频率为100.00MHZ】(二)同步复位4位加法计数器的设计8建立一个设计工程,工程名为CNT4B_SYS;9打开文本编辑器,建立一个VHDL设计文件,其VHDL代码参看异步计数器代码和实验原理中的参考代码,文件名存为CNT4B_SYS.VHD。

实验一2 含异步清0

实验一2    含异步清0

1)根据DE2_pin_assignments文件内容、格式 已制作本设计引脚对应文件的引脚锁定文 件:CNT4B.csv 2) 由Assignments->Import Assignment,打开 对话框,调入引脚对应文件即可。
• 进行编译、下载,通过实验,检查引脚锁定是 否正确。
• 将波形文件存盘为CNT4B.vwf
• 设定CNT4B.v是目前的顶层文件
• 由Processing->start->start annlysis & elaboration对程序进行初步的分析
• 由view->utility window->node finder,得到 如下对话框,
Filter中选择Pins: all 然后按List得到输 入输出端口列表, 用鼠标将它们拖到 波形编辑窗口
• 将instance框中的名字改为CNT4B(选中右击选择Rename Instance)
• 为看清楚,按
,将窗口浮动
• 在CNT4B框双击(Double-click to add node), 弹出节点(noder)对话框,Filter项选择all, 然后点击List
选中要观察的端口COUT、OUTY然后单击>加 入,点OK。
功能仿真
• 由Processing->generate functional simulation netlist,提取功能仿真的网表 • 由assigments->settings,对仿真工具设定为 功能仿真,并将激gt; start simulation 进行功能仿 真,并对结果进行分析。
• 锁好引脚,进行全编译(compile),重新布 局布线,时序仿真 引脚锁定,仿真结果核对无误后,准备下载

一、设计含异步清零和同步加载与时钟使能的计数器

一、设计含异步清零和同步加载与时钟使能的计数器

实验1设计含异步清零和同步加载与时钟使能的计数器一实验目的1.熟悉QuartusII的VHDL文本设计流程全过程,学习计数器的设计与仿真2.掌握简单逻辑电路的设计方法与功能仿真技巧。

3.学习使用V AHDL语言进行含异步清零和同步加载与时钟使能的计数器的设计二实验仪器设备1.PC机,1台2.QuartusII系统三实验原理含计数使能、异步复位4位加法计数器,其中有锁存器、rst是异步清零信号,低电平有效;clk是锁存信号、当ena为1时使能锁存器。

四实验内容用VHDL语言设计一个含异步清零和同步加载与时钟使能的计数器,并进行编辑,编译与仿真。

要求(1)设计含有异步清零CLR和时钟使能端ENA。

(2)用D触发器设计带有上述功能的十进制的加法计数器。

(3)对于所设计的程序进行编译,检查纠错。

(4)程序完善之后进行程序的仿真并进行波形的记录与分析。

五实验参考程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,RST,EN,LOAD: IN STD_LOGIC;DA TA:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK,RST,EN,LOAD)V ARIABLE Q:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF RST='0' THEN Q:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF (LOAD='0') THEN Q:=DATA; ELSEIF Q<9 THEN Q:=Q+1;ELSE Q:= (OTHERS=>'0');END IF;END IF;END IF;IF Q="1001" THEN COUT<='1';ELSE COUT<='0'; END IF;DOUT <=Q;END IF;END PROCESS;END behav;六. 实验仿真图形。

设计含异步清零和同步加载与时钟使能的计数器

设计含异步清零和同步加载与时钟使能的计数器

4-1 设计含异步清零和同步加载与时钟使能的计数器(1)实验目的:熟悉Quartus Ⅱ的VHDL文本设计流程全过程,学习计数器的设计,仿真和硬件测试。

掌握原理图与文本混合设计方法。

(2)实验原理:参考3.4节。

实验程序为例3-20。

(3)实验内容1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 ISPORT (CLK,RST,EN,LOAD : IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END cnt10;ARCHITECTURE behav OF cnt10 ISBEGINPROCESS (CLK, RST, EN, LOAD)V ARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='0' THEN Q := (OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF (LOAD='0') THEN Q := DATA; ELSEIF Q<9 THEN Q := Q + 1;ELSE Q := (OTHERS=>'0');END IF;END IF;END IF;END IF;IF Q = "1001" THEN COUT <= '1';ELSE COUT <= '0';END IF;DOUT <= Q;END PROCESS;END behav;实验内容2:(4)实验结果:实验内容1的时序仿真切图:实验内容2的时序仿真切图:。

含异步清零和同步使能的加法计数器设计与仿真

含异步清零和同步使能的加法计数器设计与仿真

实验二含异步清零和同步使能的加法计数器并用数码管显示一、实验目的1、了解二进制计数器的工作原理。

2、进一步熟悉QUARTUSII 软件的使用方法和VHDL 输入。

3、时钟在编程过程中的作用。

二、实验内容本实验要求完成的任务是在时钟信号的作用下,通过使能端和复位信号来完成加法计数器的计数。

实验中时钟信号使用数字时钟源模块的1HZ 信号,用一位en表示使能端信号,用复位开关rest 表示复位信号,用LED 模块的LED1~LED7 来表示计数的二进制结果。

实验LED亮表示对应的位为‘1’LED灭表示对应的位为‘0’。

通过输入不同的值模拟计数器的工作时序,观察计数的结果。

实验箱中的拨动开关、与FPGA 的接口电路,LED 灯与FPGA 的接口电路以及拨动开关、LED 与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。

三实验步骤1、打开QUARTUSII 软件,新建一个工程。

2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。

3、在VHDL 编辑窗口编写VHDL 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity exp4 isport( clk ,clr,en : in std_logic;co:out std_logic;key : in std_logic_vector(3 downto 0);ledag : out std_logic_vector(6 downto 0);del : out std_logic_vector(3 downto 0));end exp4;architecture whbkrc of exp4 issignal dount : std_logic_vector(3 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif clr='1'thendount<=(others=>'0');elsif en='1'thenif key="1111"thendount<="0000";co<='1';elsedount<=dount+'1';co<='0';end if;end if;end if;del<=dount;end process;process(key)begincase key iswhen "0000" => ledag <="0111111";when "0001" => ledag <="0000110";when "0010" => ledag <="1011011";when "0011" => ledag <="1001111";when "0100" => ledag <="1100110";when "0101" => ledag <="1101101";when "0110" => ledag <="1111101";when "0111" => ledag <="0000111";when "1000" => ledag <="1111111";when "1001" => ledag <="1101111";when "1010" => ledag <="1110111";when "1011" => ledag <="1111100";when "1100" => ledag <="0111001";when "1101" => ledag <="1011110";when "1110" => ledag <="1111001";when "1111" => ledag <="1110001";when others => null;end case;end process;end whbkrc;(4)分配管脚(5)功能仿真。

含异步清零和同步使能的加法计数器

含异步清零和同步使能的加法计数器

含异步清零和同步使能的加法计数器一、实验目的1、了解数码管的工作原理。

2、了解二进制计数器的工作原理学习。

3、七段数码管显示译码器的设计4、学习VHDL 的CASE 语句及多层次设计方法。

二、实验原理七段数码管是电子开发过程中常用的输出显示设备。

在实验系统中使用的是两个四位一体、共阴极型七段数码管。

其单个静态数码管如下图4-1 所示。

图4-1 静态七段数码管由于七段数码管公共端连接到GND ,当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。

反之则不亮。

共阳极性的数码管与之相么。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp 都连在了一起,8 个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过使能端和复位信号来完成加法计数器的计数。

实验中时钟信号使用数字时钟源模块的 1HZ 信号,用一位en表示使能端信号,用复位开关 rest 表示复位信号,用 LED 模块的LED1~LED7 来表示计数的二进制结果。

实验 LED亮表示对应的位为‘1’ LED灭表示对应的位为‘0’。

通过输入不同的值模拟计数器的工作时序,观察计数的结果。

实验箱中的拨动开关、与 FPGA 的接口电路,LED 灯与 FPGA 的接口电路以及拨动开关、 LED 与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。

四实验步骤1、打开 QUARTUSII 软件,新建一个工程。

2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。

3、在 VHDL 编辑窗口编写 VHDL 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jishuqi isport( clk ,clr,en : in std_logic;co:out std_logic;key : in std_logic_vector(3 downto 0);ledag : out std_logic_vector(6 downto 0);del : out std_logic_vector(3 downto 0));end jishuqi;architecture whbkrc of jishuqi issignal dount : std_logic_vector(3 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif clr='1'thendount<=(others=>'0');elsif en='1'thenif key="1111"thendount<="0000";co<='1';elsedount<=dount+'1';co<='0';end if;end if;end if;del<=dount;end process;process(key)begincase key iswhen "0000" => ledag <="0111111"; when "0001" => ledag <="0000110"; when "0010" => ledag <="1011011"; when "0011" => ledag <="1001111"; when "0100" => ledag <="1100110"; when "0101" => ledag <="1101101"; when "0110" => ledag <="1111101"; when "0111" => ledag <="0000111";when "1000" => ledag <="1111111"; when "1001" => ledag <="1101111"; when "1010" => ledag <="1110111"; when "1011" => ledag <="1111100"; when "1100" => ledag <="0111001"; when "1101" => ledag <="1011110"; when "1110" => ledag <="1111001"; when "1111" => ledag <="1110001"; when others => null;end case;end process;end whbkrc;分配管脚功能仿真五、实验小结通过本次试验,更加熟悉二进制计数器的工作原理,进一步熟悉 QUARTUSII 软件的使用方法和 VHDL 输入,同时掌握了时钟在编程过程中的作用,虽然试验中遇到了一些小困难,但是通过请教老师和同学还是顺利的解决了。

设计含异步清零和同步时钟使能的加法计数器.doc

设计含异步清零和同步时钟使能的加法计数器.doc

设计含异步清零和同步时钟使能的加法计数器.doc加法计数器是一种常见的数字电路,它可以用于计数器、频率分频等应用。

本文将介绍一种具有异步清零和同步时钟使能的加法计数器的设计方法。

一、电路原理加法计数器由若干个触发器组成,每个触发器的输出连接到下一个触发器的时钟端。

当计数器接受到一个时钟信号时,每个触发器的状态将根据前一个触发器的状态和时钟信号发生变化,从而实现计数的功能。

本文介绍的加法计数器还包含了异步清零和同步时钟使能功能,它们分别被连接到清零端和时钟端。

当清零端接受到一个高电平信号时,计数器的状态将被清零;当时钟端接受到一个高电平信号时,计数器将在时钟上升沿时计数。

二、电路实现本文中的加法计数器由4个D触发器和一些逻辑门组成,如图所示。

其中,D触发器的输入资源于四个运算器之中,运算器分别为。

①.异或门(XOR):将A,B两个数字按位异或,当两个输入不同时,输出为1;当两个输入相同时,输出为0。

②.与非器(NAND):将AB两个输入同时取反再进行与运算,输出为非AB的结果。

在加法计数器中,D触发器的输入端连接到异或门,异或门的两个输入端分别连接到计数器输入和进位信号。

同时,计数器输出也会连接到一个4位数显。

逻辑门的输出信号会被连接到触发器的时钟控制端或清零控制端,从而实现对计数器状态的控制。

三、时序分析1.异步清零当异步清零端接受到一个高电平信号时,计数器的状态将被清零。

具体来说,所有触发器的输出都将被强制为低电平信号。

这种操作可以通过将清零信号连接到每个D触发器的清零输入实现。

2.同步时钟使能当同步时钟使能端接受到高电平信号时,计数器只在时钟上升沿时计数。

这种操作可以通过将时钟使能信号连接到所有D触发器的时钟输入实现。

具体来说,当A和B两个输入都为0时,输出为0;当A和B两个输入都为1时,输出为0;当A和B两个输入中有一个为1时,输出为1。

四、总结本文介绍了一种具有异步清零和同步时钟使能的加法计数器的设计方法。

含异步清和同步时钟使能的位加法计数器

含异步清和同步时钟使能的位加法计数器

题目含异步清0和同步时钟使能的4位加法计数器原理说明实验图1是一含计数使能,异步复位和计数值并行预置功能4位加法计数器,由实验图1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端.当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器.V H D L 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B ISPORT (CLK : IN STD_LOGIC; ——CLK为标准的逻辑类型输入端口RST : IN STD_LOGIC; ——RST为标准的逻辑类型输入端口ENA : IN STD_LOGIC; ——ENA为标准的逻辑类型输入端口OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQI : STD_LOGIC_VECTOR( 3 DOWNTO 0 );BEGINP_REG: PROCESS( CLK, RST, ENA )BEGINIF RST = '1' THEN CQI <= "0000";ELSIF CLK'EVENT AND CLK = '1' THENIF ENA = '1' THEN CQI <= CQI + 1;ELSE CQI <= "0000";END IF;END IF;OUTY <= CQI ;END PROCESS P_REG ; ——进位输出COUT <= CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); --END behav;波形图结果分析引脚锁定以及硬件下载测试.建议选实验电路模式6,用数码8显示译码输出(PIO46--PIO40),键8,键7,键6,键5四位控制输入,硬件验证译码器的工作性能.注意,在仿真中,4位输入A必须用总线方式给数据.将仿真波形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)详细的过程描述,实验过程中已经有详细给出。

相关文档
最新文档