异步清零和同步时钟使能的4位加法计数器
如何使用QuartusII7.0
![如何使用QuartusII7.0](https://img.taocdn.com/s3/m/1f4ed41155270722192ef757.png)
EDA实验技术文档含异步清0和同步时钟使能的4位加法计数器一、实验内容与实验原理利用Quartus II建立一个含计数使能、异步复位的4位加法计数器,并进行仿真测试和硬件测试。
由实验开发板上数字信号源Clock0提供一个输入为4Hz的时钟输入信号clk,由开发板上拨挡开关SW1控制计数使能端ena并由LED1指示,由核心板上SYS_RST按键控制复位端rst并由LED2指示,进位输出由LED3指示,计数值由数码管显示。
二、实验步骤1、使用Quartus II建立空白工程,然后命名为cnt_4b.qbf双击打开桌面上的Altera公司提供的Quartus II7.0(32-Bit)图标,显示如下软件界面;●选择菜单栏中File>>New Project Wizard来新建工程,点击后弹出新建工程向导对话框如下分别提示完成五项工作1)项目名称与保存路径2)顶层设计实体名称3)加入已有文件和相关库4)指定目标Altera器件封装和型号5)设置项目的其他EDA工具●单击Next进入如下图所示界面,并按图新建工程路径、名称、顶层实体在这里,工程名与顶层文件的实体名同名为cnt_4,文件夹所在路径名和文件夹名中不能用中文,不能用空格,不能用括号(),可以用下划线_或英文字母或数字,但最好也不要以数字开头。
●单击Next进入如下图所示界面,这里是添加已有相关工程文件,这里我们是建立空白工程,所以不需要添加任何文件●单击Next进入如下图所示界面,这一步是对所用实验核心板中FPGA器件进行设置,以确保代码顺利编译和下载。
MagicSOPC实验箱上的FPGA标配为:Altera公司CycloneII系列的EP2C35F672。
设置相关参数如图所示。
设置完成后,单击Next, 进入如下图所示界面,这里不需要设置其他EDA工具●再单击Next,出现如下图所示的工程信息报告对话框,提示设计者看到工程文件配置信息报告。
含异步清规和同步使能的加法计数器
![含异步清规和同步使能的加法计数器](https://img.taocdn.com/s3/m/4cb4f83c87c24028915fc332.png)
实验三含异步清零和同步使能的加法计数器一、实验目的1、了解二进制计数器的工作原理。
2、进一步熟悉QUARTUSII软件的使用方法和VHDL输入。
3、时钟在编程过程中的作用。
二、实验原理二进制计数器中应用最多、功能最全的计数器之一,含异步清零和同步使能的加法计数器的具体工作过程如下:在时钟上升沿的情况下,检测使能端是否允许计数,如果允许计数(定义使能端高电平有效)则开始计数,否则一直检测使能端信号。
在计数过程中再检测复位信号是否有效(低电平有效),当复位信号起作用时,使计数值清零,继续进行检测和计数。
其工作时序如图3-1所示:图3-1 计数器的工作时序三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过使能端和复位信号来完成加法计数器的计数。
实验中时钟信号使用数字时钟源模块的1HZ信号,用一位拨动开关K1表示使能端信号,用复位开关S1表示复位信号,用LED模块的LED1~LED11来表示计数的二进制结果。
实验LED亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。
通过输入不同的值模拟计数器的工作时序,观察计数的结果。
实验箱中的拨动开关、与FPGA的接口电路,LED灯与FPGA的接口电路以及拨动开关、LED与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。
数字时钟信号模块的电路原理如图3-2所示,表3-1是其时钟输出与FPGA的管脚连接表。
图3-2 数字时钟信号模块电路原理表3-1 数字时钟输出与FPGA的管脚连接表按键开关模块的电路原理如图3-3所示,表3-2是按键开关的输出与FPGA的管脚连接表。
图3-3 按键开关模块电路原理信号名称FPGA I/O名称核心板接口管脚号功能说明S[0] Pin_AF5 JP1_91 ‘S1’SwitchS[1]Pin_AH6 JP1_93 ‘S2’SwitchS[2]Pin_AH7 JP1_95 ‘S3’SwitchS[3]Pin_AH8 JP1_97 ‘S4’SwitchS[4]Pin_AG10 JP1_99 ‘S5’SwitchS[5]Pin_AG11 JP1_101 ‘S6’SwitchS[6]Pin_AH14 JP1_90 ‘S7’SwitchS[7] Pin_AG7 JP1_92 ‘S8’SwitchS[8]Pin_AG8 JP1_94 ‘S9’SwitchS[9]Pin_AF9 JP1_96 ‘S10’SwitchS[10]Pin_AH10 JP1_98 ‘S11’SwitchS[11] Pin_AH11 JP1_100 ‘S12’Switch表3-2 按键开关与FPGA的管脚连接表四、实验步骤1、打开QUARTUSII软件,新建一个工程。
【实验三】含异步清0和同步时钟使能的4位加法计数器
![【实验三】含异步清0和同步时钟使能的4位加法计数器](https://img.taocdn.com/s3/m/9cf04b88b9d528ea81c779c2.png)
EDA实验
【实验三】含异步清0和同步时钟使能的4 位加法计数器
实验目的
掌握简单逻辑电路的设计方法。 学习使用VHDL语言进行含异步清零和同步加 载与时钟使能的计数器的设计。
实验原理 下图是本试验中设计所要的计数器,由4位带异 步清零的加法计数器和一个4位锁存器组成。其 中,输入端有异步清零信号RST,高电平有效; 时钟信号CLK;计数使能信号ENA,高电平有 效;输出端有进位信号COUT和计数值OUTY。 当异步复位信号RST是高电平时,计数值OUTY 输出0;当计数使能控制信号
实验内容
END IF; END IF; COUT<=CQI(0) AND AND CQI(3);
实验要求
1. 说明例5-1各语句的含义,以及该例的整体功 能。在MAXPLUS II上进行编辑、编译、综合、 适配、仿真。 2. 设计10进制计数器的程序进行编辑、编译、综 合、适配、仿真;并进行引脚锁定及硬件测试。 建议选实验电路模式5,用数码1显示译码输出 (PIO19---PIO16),D8 (PIO15)作为 进位输出,键8、键7(PIO7---PIO6)两位 控制输入,硬件验证译码器的工作性能。
实验原理
ENA为‘1’时允许计数,当ENA为‘0’时停止计数。 计数器输出为“1111”时(十进制计数器,输出为 “ 1001”) ,进位信 COUT 为“ 1” ,否则 COUT 输 出 为“0”。
实验内容
程序5-2: IF RST='1'THEN CQI<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI<"1001" THEN CQI <=CQI+1; ELSE CQI<="0000"; END 在例 4-3-1 中是否可以不定义信号 CQI 而直接 用输出端口信号完成加法运算 ,即 “OUTY<=OUTY+1”?
4位同步二进制加法计数器计数最大值
![4位同步二进制加法计数器计数最大值](https://img.taocdn.com/s3/m/886692a09a89680203d8ce2f0066f5335b816717.png)
4位同步二进制加法计数器是一种常见的数字电路,用于实现二进制计数。
它可以将二进制数字表示为电信号,并且在每次输入脉冲时进行递增。
下面将详细介绍4位同步二进制加法计数器及其计数的最大值。
一、4位同步二进制加法计数器的原理1. 4位同步二进制加法计数器由4个触发器组成,每个触发器对应一个二进制位。
当输入一个脉冲时,每个触发器根据前一位的状态以及输入脉冲的信号进行状态转换。
这样就实现了二进制数的递增。
2. 触发器之间通过门电路连接,用于控制触发器状态的变化。
这些门电路可以根据具体的设计选择不同的逻辑门,常见的有AND门、OR 门、NOT门等。
3. 4位同步二进制加法计数器是同步计数器,即所有触发器同时接收输入脉冲,确保计数的同步性。
二、4位同步二进制加法计数器的计数最大值1. 4位二进制数的表示范围是0~15,因此4位同步二进制加法计数器的计数最大值为15。
2. 在计数到15后,再输入一个脉冲,计数器将重新从0开始计数,即实现了循环计数。
三、4位同步二进制加法计数器的应用1. 4位同步二进制加法计数器常用于数字电子钟、信号发生器等数字电路中,用于实现计数和定时功能。
2. 它还可以作为其他数字电路的组成部分,用于构建更复杂的逻辑功能。
3. 在数字系统中,计数器是十分重要的组件,它能够实现数字信号的计数和控制,广泛应用于各种数字系统中。
4位同步二进制加法计数器是一种重要的数字电路,通过它可以实现对二进制数的递增计数。
其计数的最大值为15,应用领域广泛。
希望本文内容能够对读者有所启发。
四、4位同步二进制加法计数器的工作原理4位同步二进制加法计数器是一种晶体管数字集成电路,它利用触发器和逻辑门等基本元件构成,能够实现二进制数字的加法计数。
在4位同步二进制加法计数器中,每个触发器代表一个二进制位,通过输入脉冲的控制,能够实现对二进制数的递增计数。
具体来说,当输入一个脉冲信号时,4位同步二进制加法计数器会根据触发器之间的连线和逻辑门的作用,根据之前的状态和输入脉冲的信号进行状态转换,从而实现二进制数的递增。
四位全加器
![四位全加器](https://img.taocdn.com/s3/m/43f960ed19e8b8f67c1cb983.png)
4位加法计数器一、实验目的(1)学习时序电路的VHDL描述方法。
(2)掌握时序进程中同步、异步控制信号的设计。
(3)熟悉EDA的仿真分析和硬件测试技术。
二、实验原理设计一个含计数使能、异步复位和并行预置功能的4位加法计数器,RST是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为1时,加法计数,COUT为计数进位输出,OUTY为计数输出。
VHDL参考程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT4B isport(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 BEHA V 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;end if;end if;outy <= CQI;end process P_REG;cout <= CQI(0) and CQI(1) and CQI(2) and CQI(3);end BEHA V;三、实验任务(1)编写4位二进制加法计数器的VHDL程序。
(2)在ispDsignEXPERT System或者Quartu sⅡ上对加法计数器进行仿真。
含异步清0和同步时钟使能的4位加法计数器 EDA技术与Verilog HDL实验报告
![含异步清0和同步时钟使能的4位加法计数器 EDA技术与Verilog HDL实验报告](https://img.taocdn.com/s3/m/e624ebc010a6f524cdbf85a2.png)
含异步清0和同步时钟使能的4位加法计数器一.实验目的熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。
二.实验内容在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,并编译、仿真验证其功能。
三.程序清单计数器顶层文件设计:10进制计数器文本输入: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)beginif (!rst) q1<=0;else if(en)beginif (!load) q1<=data;else if(q1<9) q1<=q1+1;else q1<=4'b0000;endendalways @(q1)if (q1==4'h9) cout= 1'b1;else cout= 1'b0;endmodule60位计数器文本输入:module CNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA);input CLK,EN,RST,LOAD;input [3:0] DATA;output[3:0] DOUT1;output[2:0] DOUT2;output COUT1;output COUT2;reg [3:0] Q1;reg [2:0] Q2;reg COUT1;reg COUT2;assign DOUT1 = Q1;assign DOUT2 = Q2;always @(negedge CLK or negedge RST) beginif(!RST) Q1<=0;else if (EN) beginif (!LOAD) Q1<=DATA;else if (Q1<9) Q1<=Q1+1;else Q1<=4'b0000;endendalways @(Q1)if (Q1==4'h9) COUT1=1'b1;elseCOUT1=1'b0;always @(negedge COUT1 or negedge RST)beginif(!RST) Q2<=0;else if (EN) beginif (!LOAD) Q2<=DATA;else if (Q2<5) Q2<=Q2+1;else Q2<=4'b0000;endendalways @(Q2)if ((Q1==4'h9)&&(Q2==3'h5)) COUT2=1'b1;elseCOUT2=1'b0;endmodule60位计数器图形输入:四.实验步骤1、新建一个名称为CNT10的工程,并在该文件夹中新建一个CNT10.v的文件。
含异步清零和同步时钟使能的4位加法器
![含异步清零和同步时钟使能的4位加法器](https://img.taocdn.com/s3/m/e857cf85dbef5ef7ba0d4a7302768e9951e76eeb.png)
含异步清零和同步时钟使能的4位加法器宁波⼯程学院电信学院EDA系统设计与实践实验报告实验名称含异步清零和同步时钟使能的4位加法器班级电科(系统设计)08-2 姓名学号 0840*******组员姓名实验⽇期2011-5-12指导⽼师实验四含异步清零和同步时钟使能的4位加法器⼀.实验⽬的学习计数器的设计,仿真和硬件测试。
进⼀步熟悉VHDL的编程⽅法。
⼆.实验内容本实验的内容是Quartus 11建⽴⼀个含计数使能、异步复位的4位加分计数器,SmartSOPC试验箱上进⾏硬件测试,由KEY1控制技术使能端ena并由LED指⽰,KEY2控制复位端rst并由LED2指⽰。
计数值由数码管指⽰。
三.实验原理Rst是异步清零信号,⾼电平有效。
Ema为是能端,能开始与暂停程序,当ena为0时,能所存信号。
四.实验步骤(1)破解Quartus 11;(2)建⽴⼯程:启动Quartus 11,建⽴空⽩⼯程。
命名为giui;(3)创建源程序⽂件:新建VHDL源程序⽂件giui,输⼊程序代码并保存,进⾏编译,若在编译过程中发现错误,则找出并更正,直⾄编译成功。
(4)编译并运⾏:编译并运⾏程序或者原理图,编译⽆误后,进⾏引脚锁定;(5)外部连接⽅式跟第2节相似。
五.实验程序⼀.在⼀个数码管上显⽰0~Flibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity giui isport(clk48:in std_logic;key_2bit:in std_logic;dig_4bit:out std_logic_vector(3 downto 0);seg:out std_logic_vector(7 downto 0));end giui;architecture m1 of giui issignal num1:std_logic_vector(3 downto 0);signal cnt:std_logic_vector(23 downto 0);signal t: std_logic;signal q:std_logic;beginfre:process(clk48,cnt)beginif clk48'event and clk48='1' thencnt<=cnt+1;end if;q<=cnt(23);end process fre;coun:process(q)beginif q'event and q='1' thenif t='1' then num1<="0000";elsenum1<=num1+1;end if;end if;end process;SEG<= "11000000" when num1="0000" else "11111001" when num1="0001" else "10100100" when num1="0010" else"10110000" when num1="0011" else"10011001" when num1="0100" else"10010010" when num1="0101" else"10000010" when num1="0110" else"11111000" when num1="0111" else"10000000" when num1="1000" else"10010000" when num1="1001" else"10001000" when num1="1010" else"10000011" when num1="1011" else"01000110" when num1="1100" else"10100001" when num1="1101" else"10000110" when num1="1110" else"11111111";dig_4bit<="1110" when t='1' else"1111" when t='0';end m1;⼆.4位加法器Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sun_adder isport(clk:in std_logic;key:in std_logic;led1:out std_logic;dig:out std_logic_vector(3 downto 0);seg:out std_logic_vector(7 downto 0)); end sun_adder;architecture a of sun_adder issignal tmp:std_logic_vector(23 downto 0); signal tmp1:std_logic_vector(10 downto 0); signal address,pp:std_logic_vector(3 downto 0); signal p:std_logic_vector(1 downto 0);signal tt,t,q,q1: std_logic;signal num1,num2,num3,num4:std_logic_vector(3 downto 0);beginprocess(clk)beginif clk'event and clk='1' then tmp<=tmp+1;tmp1<=tmp1+1;end if;end process;q<=tmp(23);q1<=tmp1(10);process(q1)beginif q1'event and q1='1' then case p iswhen "00"=>pp<="1110";when "01"=>pp<="1101";when "10"=>pp<="1011";when others=>pp<="0111";end case;dig<=pp;case pp iswhen "1110"=>address<=num1;when "1101"=>address<=num2;when "1011"=>address<=num3;when others=>address<=num4;end case;p<=p+1;end if;end process;process(key)beginIf key'event and key='1' thent<= not t;end if;end process;process(q)beginif q'event and q='1' thenif t='1' then num1<="0000";num2<="0000";num3<="0000";num4<="0000";else num1<=num1+1;if num1="1001" then num1<="0000";tt<='1';if num2="1001" then num2<="0000";if num3="1001" then num3<="0000";if num4="1001" then num4<="0000";else num4<=num4+1; end if;else num3<=num3+1; end if;else num2<=num2+1; `1212212345123451233123`12341234123412341312end if; else num1<=num1+1;tt<='0'; end if; end if;end if;end process;seg<= "11000000" when address="0000" else"11111001" when address="0001" else"10100100" when address="0010" else"10110000" when address="0011" else"10011001" when address="0100" else"10010010" when address="0101" else"10000010" when address="0110" else "11111000" when address="0111" else "10000000" when address="1000" else "10010000" when address="1001" else "11111111";led1<='0' when tt='1' else'1' when tt='0';end a;六.实验现象。
含异步清零和同步使能的加法计数器
![含异步清零和同步使能的加法计数器](https://img.taocdn.com/s3/m/f1af5c14866fb84ae45c8ddb.png)
含异步清零和同步使能的加法计数器一、实验目的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 输入,同时掌握了时钟在编程过程中的作用,虽然试验中遇到了一些小困难,但是通过请教老师和同学还是顺利的解决了。
设计含异步清0和同步时钟使能的加法计数器
![设计含异步清0和同步时钟使能的加法计数器](https://img.taocdn.com/s3/m/a1b335a8dd3383c4bb4cd2dd.png)
专业班级:学号:姓名:EDA 技术实验报告实验项目名称:设计含异步清0和同步时钟使能的加法计数器实验日期:2012.05.27 实验成绩:实验评定标准:一、实验目的学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验器材PC机、FPGA实验箱。
三、实验内容(实验过程)1、在QuartusⅡ上对例中程序进行编辑、编译、综合、适配、仿真。
说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
2、在仿真波形正确后,自己选择合适的电路模式,然后进行引脚锁定以及硬件下载测试。
(时钟信号选用KLOCK0/126脚进行绑定会比较便于观察计数过程,其他输入输出的引脚绑定参照实验书后附录表进行绑定),引脚锁定成功后进行编译、下载和硬件测试实验。
将实验过程和实验结果写进实验报告。
四、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (clk,rst,en:in std_logic;cq:out std_logic_vector(3 downto 0);cout:out std_logic);end cnt10;architecture behav of cnt10 isbeginprocess(clk,rst,en)variable cqi:std_logic_vector(3 downto 0);beginif rst='1'then cqi:=(others=>'0');elsif clk'event and clk='1' thenif en='1' thenif cqi<9 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;end if;if cqi=9 then cout<='1';else cout<='0';end if;cq<=cqi;end process;end behav;五、实验仿真、结果及分析试验程序仿真波形如下:由实验仿真波形可以看出:当rst端输入为“1”时,其它输出端口皆为“0”,实现了计数器异步复位的功能。
含异步清0和同步时钟使能的4-位加法计数器-报告
![含异步清0和同步时钟使能的4-位加法计数器-报告](https://img.taocdn.com/s3/m/ab57232c6294dd88d1d26b49.png)
含异步清0和同步时钟使能的4-位加法计数器-报告-CAL-FENGHAI.-(YICAI)-Company One1EDA设计课程实验报告实验题目:含异步清0和同步时钟使能的4 位加法计数器学院名称:专业:班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习计数器的设计,仿真和硬件测试,进一步熟悉VHDL 的编程方法。
二、设计任务及要求1.设计总体要求:利用Quartus II建立一个含技术使能、异步复位的4位加法计数器,在SmartSOPC试验箱上进行硬件测试,由KEY1控制技术使能端ena并由LED1指示,KEY2控制复位端rst 并由LED2指示。
计数值由数码管指示。
2.设计基本要求:(1)进行正常的加法计数功能。
(2)由四个数码管显示其计数情况。
三、系统设计1、整体设计方案含异步清零与同步时钟使能计数器由译码显示电路、脉冲发生电路和16进制计数器这3个基本电路组成的。
此次设计要实现的功能有:正常的计数,异步清零,同步使能功能。
整体设计系统框图如图1所示:图1 含异步清零与同步时钟使能计数器系统结构图2、功能模块电路设计(1)各模块设计:译码显示电路模块框图(见图2):图2 译码显示电路系统输入输出模块框图脉冲发生电路模块框图(见图3):图3 秒脉冲发生电路系统输入输出模块框图16位进制计数电路系模块框图(见图4):图4 16位进制计数电路系统输入输出模块框图秒脉冲发生电路产生脉冲输入到16位计数器电路,计数器电路响应脉冲计数然后将计数响应输入到译码显示电路,译码显示电路响应,这时实验箱上8个数码管的后4位将进行从0到F计数的循环显示。
整体输入输出模块框图(见图5):图5 含异步清零与同步时钟使能计数器系统输入输出模块框图(2)模块逻辑表达(见表一和表二)功能 clk rst ena dout[3:0] 异步清零 X 0 X 0 0 0 0表一 16进制计数器的真值表表二译码显示电路的真值表(3)算法流程图译码显示电路流程图(见图6):图6 译码显示电路算法流程图16位计数器流程图(见图7):图7 16位计数器电路算法流程图(4)Verilog源代码译码显示电路代码:module dec(d,seg,dig); //定义模块名与输入输出input[3:0] d;output[7:0] seg;output[3:0] dig; //定义输入输出与数据类型reg[7:0] seg_r; //定义一个reg类型数据assign dig=4'b0000; //给dig赋值0assign seg=seg_r; //将reg类型数据与wire类型数据进行转换always @(d) //检测目标信号dbegincase(d) //case语句,目标公式为d4'b0000:seg_r=8'hc0; //当4位的d数据变化时对应的rge数据类型的seg_r数值4'b0001:seg_r=8'hf9;4'b0010:seg_r=8'ha4;4'b0011:seg_r=8'hb0;4'b0100:seg_r=8'h99;4'b0101:seg_r=8'h92;4'b0110:seg_r=8'h82;4'b0111:seg_r=8'hf8;4'b1000:seg_r=8'h80;4'b1001:seg_r=8'h90;4'b1010:seg_r=8'h88;4'b1011:seg_r=8'h83;4'b1100:seg_r=8'hc6;4'b1101:seg_r=8'ha1;4'b1110:seg_r=8'h86;4'b1111:seg_r=8'h8e;default:seg_r=8'h0; //其余d的显示的数据seg_r显示为0endcase //结束case语句end //结束always语句endmodule //结束程序16进制计数器电路代码:module jsqt(clk,rst,ena,dout); //定义模块名与输入输出input clk,rst,ena;output[3:0] dout; //定义输入输出与数据类型reg[3:0] dout_r; //定义一个reg数据类型assign dout=dout_r; //将reg类型数据与wire类型数据进行转换always @(posedge clk or negedge rst) //检测目标信号时钟或异步信号beginif(rst==0) //检测信号rst是否恒等于0dout_r=4'b0000; // 给reg数据类型的dout_r赋值0else if(ena==1) //检测信号ena是否恒等于1dout_r=dout_r+1; //数据dout_r加1end //结束always语句endmodule //结束程序四、系统调试1、仿真调试(1)仿真代码译码显示电路仿真代码:`timescale 1ns/1nsmodule dec_tp; //测试模块的名字reg[3:0] d; //测试输入信号定义为reg型wire[7:0] seg; //测试输出信号定义为wire型wire[3:0]dig; //测试输出信号定义为wire型parameter DELY=100; //延时100秒dec u1(d,seg,dig); //调用测试对象assign dig=4'b0000; //给dig赋值0initial begin //激励波形设定d=4'b0;#DELY d=4'b0001;#DELY d=4'b0010;#DELY d=4'b0011;#DELY d=4'b0100;#DELY d=4'b0101;#DELY d=4'b0110;#DELY d=4'b0111;#DELY d=4'b1000;#DELY d=4'b1001;#DELY d=4'b1010;#DELY d=4'b1011;#DELY d=4'b1100;#DELY d=4'b1101;#DELY d=4'b1110;#DELY d=4'b1111;#DELY $finish;endinitial $monitor($time,,,"seg=%d,dig=%d,d=%b",seg,d,dig); //输出格式i定义endmodulemodule dec(d,seg,dig); //命名模块名字input[3:0] d;output[7:0] seg;output[3:0] dig; //定义输入与输出reg[7:0] seg_r; // 定义seg_r的reg型数据assign dig=4'b0000; //给dig赋值0assign seg=seg_r; //将reg型数据转化为wire型数据always @(d) //检测d的数据是否变化begincase(d) //七段译码4'b0000:seg_r = 8'hc0; //显示04'b0001:seg_r = 8'hf9; //显示14'b0010:seg_r = 8'ha4; //显示24'b0011:seg_r = 8'hb0; //显示34'b0100:seg_r = 8'h99; //显示44'b0101:seg_r = 8'h92; //显示54'b0110:seg_r = 8'h82; //显示64'b0111:seg_r = 8'hf8; //显示74'b1000:seg_r = 8'h80; ///显示84'b1001:seg_r = 8'h90; //显示94'b1010:seg_r = 8'h88; //显示a4'b1011:seg_r = 8'h83; //显示b4'b1100:seg_r = 8'hc6; //显示c4'b1101:seg_r = 8'ha1; //显示d4'b1110:seg_r = 8'h86; //显示e4'b1111:seg_r = 8'h8e; ///显示fendcase //结束case语句end //结束always语句endmodule //结束程序16进制计数器仿真代码:`timescale 1ns/1nsmodule jsqt_tp; //测试模块的名字reg clk,rst,ena; //测试输入信号定义为reg型wire[3:0] dout; //测试输出信号定义为wire型parameter DELY=100; //延时100秒jsqt u1(clk,rst,ena,dout); //调用测试对象initial begin //激励波形设定clk=0;rst=1;ena=1;#DELY clk=1;rst=1;ena=1;#DELY clk=0;rst=1;ena=1;#DELY clk=1;rst=1;ena=1;#DELY clk=0;rst=1;ena=1;#DELY clk=1;rst=1;ena=1;#DELY clk=0;rst=1;ena=1;#DELY clk=1;rst=1;ena=1;#DELY clk=0;rst=1;ena=1;#DELY $finish;endinitial$monitor($time,,,"dout=%d,rst=%b,ena=%b,clk=%b",dout,rst,ena,clk); //输出格式i定义endmodulemodule jsqt(clk,rst,ena,dout); //定义模块名与输入输出input clk,rst,ena;output[3:0] dout; //定义输入输出与数据类型reg[3:0] dout_r; //定义一个reg数据类型assign dout=dout_r; //将reg类型数据与wire类型数据进行转换always @(posedge clk or negedge rst) //检测目标信号时钟或异步信号beginif(rst==0) //检测信号rst是否恒等于0dout_r=4'b0000; // 给reg数据类型的dout_r赋值0else if(ena==1) //检测信号ena是否恒等于1dout_r=0; //给dout_r赋初值dout_r=dout_r+4’b1; //数据dout_r加1end //结束always语句endmodule //结束程序(2)仿真波形图译码显示仿真波形图(见图8):图8 译码显示部分仿真波形图16进制计数器仿真波形图(见图9):图9 16进制计数器仿真波形图(3)波形分析由图6-1与图6-2可以看出给4位dig赋值0,每延迟100秒可以看见4位的d变化与8位seg产生的数据与代码上的编程相符合。
设计含异步清零和同步时钟使能的加法计数器.doc
![设计含异步清零和同步时钟使能的加法计数器.doc](https://img.taocdn.com/s3/m/6e6b2f3017fc700abb68a98271fe910ef12daed5.png)
设计含异步清零和同步时钟使能的加法计数器.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。
四、总结本文介绍了一种具有异步清零和同步时钟使能的加法计数器的设计方法。
EDA 4位加法计数器
![EDA 4位加法计数器](https://img.taocdn.com/s3/m/2b8eff6325c52cc58bd6befb.png)
课程名称:EDA技术与FPGA应用设计实验项目:4位加法计数器实验地点:专业班级:学号:学生姓名:2012年 6 月22 日一、实验目的①学习时序电路的VHDL描述方法。
②掌握时序进程中同步、异步控制信号的设计③熟悉EDA的仿真分析和硬件测试技术。
二、实验任务①编写4位二进制加法计数器的VHDL程序。
②在isp Design EXPERT System上对编码器进行仿真。
③将输入引脚连接到拨码开关,时钟输入锁定到相应频率的时钟信号,输出连接到发光二极管,下载后在实验板上验证其功能,记录实验结果。
三、实验原理设计一个含计数使能、异步复位和并行预置功能的4位加法计数器,RST 是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为“1”'时,加法计数,COUT为计数进位输出,OUTY为计数输出。
四、主要仪器设备Isp Design EXPERT System软件,FPGA配置存储芯片,硬件电路板。
五、实验步骤①启动Isp Design EXPERT软件,并创立设计项目和选择器件ispLSI 1016E。
②在Source-New中,选择“VHDL Module”,然后选择OK。
在VHDL文本编辑器中输入源文件。
③选择Tools-Synplicity Synplify Synthesis命令,对源文件进行编译、综合。
④在项目管理器的处理过程窗口中选择Constraint Manager选项,进行引脚锁定,根据实验板来进行引脚锁定。
⑤插板,在Tools-ISDP中,搜索源文件和板,进行调试,观察板上结果。
六、调试过程功能仿真:引脚锁定图:七、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity siwei isport(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 siwei;architecture arc of siwei issignal cqi:std_logic_vector(3 downto 0); beginp_reg: process(clk,rst,ena)beginif rst=‘1’then cqi=“0000”;elsif clk′enent and clk=‘1’thenif 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 arc;八、实验结果与分析四个灯按照0000—1111规律闪烁,当计数到达1111后,自动归0000后重新计时,由此完成了四位加法计数器。
实验4 双向计数器设计
![实验4 双向计数器设计](https://img.taocdn.com/s3/m/a315ac2fe2bd960590c677f9.png)
实验四 双向计数器设计一、实验目的学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL 设计技术; 掌握双向异步清零计数器(加/减1器)的设计方法。
二、设计描述及方法1. 设计电路的接口描述。
图5-1双向含异步清0和同步时钟使能的4位加法器管脚图如图5-1,引脚说明如下: • clk 是计数端口;• reset 是异步清零信号,高电平有效;• enable 是使能端,当它为高电平时,才能将加1器的输出值加载到锁存器的数据端 • dir 是加减操作的控制选择,高电平加1器;低电平减1器 • yout[3..0]是四位数据输出端,通过锁定数码管用以显示输出数据; •cout 是计数溢出端。
2. 真值表。
如表5-1所示:表5-1 双向含异步清0和同步时钟使能的4位加法器真值表3. 电路设计基本方法To 7-segment decoder To a LED这是一个单时钟十六进制计数器;“双向”指的是加1还是减1操作,可以用语句if dir=’1’then …else实现;“异步清零”指的是只要reset为高电平,立即清零,而不需要等待时钟脉冲(计数脉冲)到来;“同步时钟使能”是指当enable有效时还不能立即把内部输出值加载到锁存器的数据端,而是需要等到下一个时钟,在时钟信号的控制下再相应。
三、设计步骤完成计数器的VHDL描述,并对其进行波形仿真,确定结果正确。
四、硬件验证(选做)1.选择实验电路结构5对该设计进行硬件验证。
在该实验电路结构中,将键8(PIO7)对应为reset控制信号,键7(PIO6)对应为enable控制信号,键6(PIO5)对应为dir控制信号,yout是计数输出接数码1(PIO19-PIO16,低位靠右),计数溢出cout接发光管D8(PIO15);时钟clk接clock0,通过短路帽选择4Hz信号。
2.查阅系统引脚对照表,完成引脚锁定。
3.重新编译成功后,完成器件的下载配置。
含异步清零和同步时钟使能的加法计数器设
![含异步清零和同步时钟使能的加法计数器设](https://img.taocdn.com/s3/m/e516301f964bcf84b9d57b66.png)
EDA实验报告书课题名称含异步清零和同步时钟使能的加法计数器设计实验目的1.学习计数器的设计、仿真和硬件测试方法;2.进一步熟悉VHDL设计技术;设计要求设计24进制含异步清零和同步时钟使能的加法计数器,具体要求如下:1.清零端高电平时,信号输出为0;使能端高电平时可以计数;2.本计数器为上升沿触发;3.计数器的输出为两路信号,分别代表计数值的个位和十位;两路信号以BCD码输出。
设计思路根据十进制使能端加法计数器设计24进制计数器,设计异步清零;清零端高电平时,信号输出为0;使能端高电平时可以计数。
现根据书上设计出24进制计数器,再通过改进,变为两路输出BCD码。
设计原理图及源程序仿真波形图实验结果问题讨论LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JINZHI60 ISPORT(CLK,RD,EN:IN STD_LOGIC;CQ,CP:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END JINZHI60;ARCHITECTURE BBQ OF JINZHI60 ISSIGNAL CS,CG: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,RD,EN)BEGINIF RD='1' THEN CG<="0000";CS<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF (CS="0101" AND CG="1001") THENCG<="0000";CS<="0000";ELSIF CG="1001" THEN CG<="0000";IF CS="0101" THEN CS<="0000";ELSE CS<=CS+1;END IF;ELSE CG<=CG+1;END IF;END IF;END IF;CQ<=CG;CP<=CS;IF (CS="0101" AND CG="1001") THEN COUT<='1';ELSECOUT<='0';END IF;END PROCESS;END BBQ;教师评分教师签名日期操作成绩报告成绩。
EDA课程设计之含异步清0和同步时钟使能的加法计数器
![EDA课程设计之含异步清0和同步时钟使能的加法计数器](https://img.taocdn.com/s3/m/79d3fe5db207e87101f69e3143323968001cf45b.png)
实验2 含异步清0和同步时钟使能的加法计数器(1) 实验目的:学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
(2) 实验原理:实验程序为例3-3,实验原理在第二章,设计流程参考第二章。
【例3-3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '1' THEN CQI := (OTHERS =>'0') ;ELSIF CLK'EVENT AND CLK='1' THENIF EN = '1' THENIF CQI < 9 THEN CQI := CQI + 1;ELSE CQI := (OTHERS =>'0');END IF;END IF;END IF;IF CQI = 9 THEN COUT <= '1';ELSE COUT <= '0';END IF;CQ <= CQI;END PROCESS;END behav;(3) 实验内容1:在QuartusⅡ上对例3-3进行编辑、编译、综合、适配、仿真。
说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
EDA技术实验报告
![EDA技术实验报告](https://img.taocdn.com/s3/m/0a253d17cd1755270722192e453610661ed95abd.png)
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)COCO 1S 2S 3S 4(4)为管脚和节点命名:在管脚上的PIN_NAME处双击⿏标左键,然后输⼊名字;选中需命名的线,然后输⼊名字。
(5)创建缺省(Default)符号:在File菜单中选择Create Symbol Files for Current File项,即可创建⼀个设计的符号,该符号可被⾼层设计调⽤。
3.利⽤层次化原理图⽅法设计4位全加器(1)⽣成新的空⽩原理图,作为4位全加器设计输⼊(2)利⽤已经⽣成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形⽂件(file->new->Other Files->Vector Waveform File),保存后进⾏仿真(Processing ->Start Simulation),对4位全加器进⾏时序仿真。
异步清零和同步时钟使能的4位加法计数器
![异步清零和同步时钟使能的4位加法计数器](https://img.taocdn.com/s3/m/031ed73d647d27284b7351ac.png)
Error (10482): VHDL error at CNT4.vhd(18): object "COUNT" is used but not declared异步清零和同步时钟使能的4位加法计数器一、实验目的:学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验原理本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁存器组成。
其中,rst是异步清零信号,高电平有效;clk是计数时钟,同时也是锁存信号;ENA为计数器输出使能控制。
当ENA为‘1’时,加法计数器的输出值加载于锁存器的数据端,;当ENA为‘0’时锁存器输出为高阻态。
当计数器输出“1111”时,进位信号COUT为“1”。
三、实验内容1)画出该计数器的实体框图02)用VHDL语言完成上述计数器的行为级设计。
------------------------------------------------------------------------------------------------------- 程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 ISPORT (RST,CLK,ENA:IN STD_LOGIC;COUT: OUT STD_LOGIC;OUTY :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CNT4;ARCHITECTURE behv OF CNT4 ISBEGINPROCESS (RST,ENA,CLK)VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI :=(OTHERS =>'0');ELSIF CLK'EVENT AND CLK='1' THENIF ENA ='1' THENIF CQI < 15 THEN CQI:=CQI+1;ELSE CQI :=(OTHERS =>'0');END IF;END IF;END IF;IF CQI =15 THEN COUT<='1';ELSE COUT <='0';END IF;OUTY <=CQI;END PROCESS;END behv;3)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。
实验五 含异步清零和同步使能4位加法计数器的VHDL设计
![实验五 含异步清零和同步使能4位加法计数器的VHDL设计](https://img.taocdn.com/s3/m/04caa706866fb84ae45c8dd5.png)
实验五含异步清零和同步使能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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Error (10482): VHDL error at CNT4.vhd(18): object "COUNT" is used but not declared异步清零和同步时钟使能的4位加法计数器
一、实验目的:
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验原理
本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁存器组成。
其中,rst是异步清零信号,高电平有效;clk是计数时钟,同时也是锁存信号;ENA为计数器输出使能控制。
当ENA为‘1’时,加法计数器的输出值加载于锁存器的数据端,;当ENA为‘0’时锁存器输出为高阻态。
当计数器输出“1111”时,进位信号COUT为“1”。
三、实验内容
1)画出该计数器的实体框图0
2)用VHDL语言完成上述计数器的行为级设计。
------------------------------------------------------------------------------------------------------- 程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT4 IS
PORT (RST,CLK,ENA:IN STD_LOGIC;
COUT: OUT STD_LOGIC;
OUTY :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT4;
ARCHITECTURE behv OF CNT4 IS
BEGIN
PROCESS (RST,ENA,CLK)
VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST='1' THEN CQI :=(OTHERS =>'0');
ELSIF CLK'EVENT AND CLK='1' THEN
IF ENA ='1' THEN
IF CQI < 15 THEN CQI:=CQI+1;
ELSE CQI :=(OTHERS =>'0');
END IF;
END IF;
END IF;
IF CQI =15 THEN COUT<='1';
ELSE COUT <='0';
END IF;
OUTY <=CQI;
END PROCESS;
END behv;
3)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。
--------------------------------------------------------------------------------------------------
仿真波形:
引脚锁定:
信号旧试验箱新试验箱No.5
管脚号连接的器件管脚号连接的器件clk 43 Clk1 153 CLK2
rst 35 开关2 234 键2
ena 30 开关1 233 键1
Outy(3) 29 LED12 1 LED1
Outy(2) 28 LED11 2 LED2
Outy(1) 27 LED10 3 LED3
Outy(0) 25 LED9 4 LED4
cout 23 LED7 6 LED6 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT4 IS
PORT (A,CLK,B:IN STD_LOGIC;
COUT: OUT STD_LOGIC;
Y :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT4;
ARCHITECTURE behav OF CNT4 IS
SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (A,B,CLK)
BEGIN
IF A='1' THEN
CQI <= "0000";
Y <= "0000";
COUT<='0';
ELSIF CLK'EVENT AND CLK='1' THEN
IF B ='1' THEN
CQI<=CQI+1;
END IF;
END IF;
Y<=CQI;
COUT<=CQI(0) AND CQI(1) AND CQI (2) AND CQI (3); END PROCESS;
END behav;。