文档库 最新最全的文档下载
当前位置:文档库 › VHDL 4位计数器的设计

VHDL 4位计数器的设计

VHDL 4位计数器的设计
VHDL 4位计数器的设计

*******bcd译码器******

library ieee;

use ieee.std_logic_1164.all;

entity decoder is

port(bcd: in std_logic_vector(3 downto 0);

y: out std_logic_vector(7 downto 0));

end entity;

architecture rtl of decoder is

begin

process (bcd)

begin

case bcd is

when "0000" => y<="11000000"; --0: h g f e d c b a when "0001" => y<="11111001"; --1

when "0010" => y<="10100100"; --2

when "0011" => y<="10110000"; --3

when "0100" => y<="10011001"; --4

when "0101" => y<="10010010"; --5

when "0110" => y<="10000010"; --6

when "0111" => y<="11111000"; --7

when "1000" => y<="10000000"; --8

when "1001" => y<="10010000"; --9

when others => y<="11111111";

end case;

end process;

end rtl;

***********多路选择控制************

library ieee;

use ieee.std_logic_1164.all;

entity mux is

port (input_a:in std_logic_vector(3 downto 0); input_b:in std_logic_vector(3 downto 0);

input_c:in std_logic_vector(3 downto 0);

input_d:in std_logic_vector(3 downto 0);

sel:in std_logic_vector(1 downto 0);

y:out std_logic_vector(3 downto 0));

end entity mux;

architecture rtl of mux is

begin

process(sel)is

begin

if(sel="00")then

y<=input_a;

elsif(sel="01")then

y<=input_b;

elsif(sel="10")then

y<=input_c;

else

y<=input_d;

end if;

end process;

end rtl;

************分频************

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity clk4ms is

port (clk:in std_logic;

y:buffer std_logic);

end entity clk4ms ;

architecture rtl of clk4ms is

signal a:STD_LOGIC_VECTOR(17 DOWNTO 0); begin

process(clk)is

begin

if(clk'event and clk='1')then

if(a="10111011100000000") then

a<="000000000000000000";

y<=not y;

else

a<=a+'1';

end if;

end if;

end process;

end rtl;

************计数器************

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt is

port (clk,clr,en:in std_logic;

a:out std_logic_vector(3 downto 0);

b:out std_logic_vector(3 downto 0);

c:out std_logic_vector(3 downto 0);

d:out std_logic_vector(3 downto 0));

end entity cnt ;

architecture rtl of cnt is

signal dout_0,dout_10,dout_100,dout_1000:std_logic_vector(3 downto 0); begin

process(clr,clk,en)is

begin

a<=dout_0;

b<=dout_10;

c<=dout_100;

d<=dout_1000;

if clr='1' then

dout_0<="0000";

dout_10<="0000";

dout_100<="0000";

dout_1000<="0000";

elsif(en='1')then

if(clk'event and clk='1')then

if(dout_0="1001")then ---计数

dout_0<="0000";

else

dout_0<=dout_0+'1';

end if;

elsif(clk'event and clk='1' and dout_0="1001")then

if(dout_10="1001") then ---计数

dout_10<="0000";

else

dout_10<=dout_10+'1';

end if;

elsif(clk'event and clk='1' and dout_0="1001" and dout_10="1001")then

if(dout_100="1001") then ---计数

dout_100<="0000";

else

dout_100<=dout_100+'1';

end if;

elsif(clk'event and clk='1' and dout_0="1001" and dout_10="1001" and dout_100="1001")then

if(dout_1000="1001") then ---计数

dout_1000<="0000";

else

dout_1000<=dout_1000+'1';

end if;

end if;

end if;

end process;

end rtl;

************位选************

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY wei IS

PORT(clk4ms:IN STD_LOGIC;

q:BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0);

d:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END ENTITY wei;

ARCHITECTURE rtl OF wei IS

BEGIN

PROCESS(clk4ms) IS

BEGIN

IF(clk4ms 'EVENT AND clk4ms='1') THEN IF(q="11") THEN

q<="00";

ELSE

q<=q+'1';

END IF;

IF(q="00") THEN

d<="1000";

ELSIF(q="01") THEN

d<="0100";

ELSIF(q="10") THEN

d<="0010";

ELSE

d<="0001";

END IF;

END IF;

END PROCESS;

END ARCHITECTURE rtl;

**********总程序*********

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY ZONG IS

PORT( clr :IN STD_LOGIC;

clk :IN STD_LOGIC;

CLK4M:IN STD_LOGIC;

en:IN STD_LOGIC;

Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ZONG ;

ARCHITECTURE a OF ZONG IS

COMPONENT cnt is

port (clk,clr,en:in std_logic;

a:out std_logic_vector(3 downto 0);

b:out std_logic_vector(3 downto 0);

c:out std_logic_vector(3 downto 0);

d:out std_logic_vector(3 downto 0));

END COMPONENT;

COMPONENT MUX is

port (input_a:in std_logic_vector(3 downto 0); input_b:in std_logic_vector(3 downto 0);

input_c:in std_logic_vector(3 downto 0);

input_d:in std_logic_vector(3 downto 0);

sel:in std_logic_vector(1 downto 0);

y:out std_logic_vector(3 downto 0));

end COMPONENT;

COMPONENT DECODER is

port(bcd:in std_logic_vector(3 downto 0);

y: out std_logic_vector(7 downto 0));

end COMPONENT;

COMPONENT WEI is

port(clk4ms:in std_logic;

d:out std_logic_vector(3 downto 0));

end COMPONENT;

COMPONENT CLK4MS is

port(clk:in std_logic;

y:out std_logic);

end COMPONENT;

SIGNAL aa,bb,cc,dd:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL mm:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ss:STD_LOGIC;

signal ww:STD_LOGIC_VECTOR(1 DOWNTO 0);

BEGIN

u1 : cnt PORT MAP

(clk,clr,en,aa,bb,cc,dd);

u2 : mux PORT MAP

(aa,bb,cc,dd,ww,mm);

u3 :decoder PORT MAP

(mm,y);

u4 : wei PORT MAP

(ss,ww,dig);

u5 : clk4ms PORT MAP

(clk4m,ss);

END a;

实验四、 计数器的设计 电子版实验报告

实验四:计数器的设计 实验室:信息楼247 实验台号: 4 日期: 专业班级:机械1205 姓名:陈朝浪学号: 20122947 一、实验目的 1. 通过实验了解二进制加法计数器的工作原理。 2. 掌握任意进制计数器的设计方法。 二、实验内容 (一)用D触发器设计4位异步二进制加法计数器 由D触发器组成计数器。触发器具有0和1两种状态,因此用一个触发器 就可以表示1位二进制数。如果把n个触发器串起来,就可以表示N位二进制 数。(用两个74LS74设计实现) (二)利用74LS161设计实现任意进制的计数器 设计要求:学生以实验台号的个位数作为所设计的任意进制计数器。 先熟悉用1位74LS161设计十进制计数器的方法。 ①利用置位端实现十进制计数器。 ②利用复位端实现十进制计数器。 提示:设计任意计数器可利用芯片74LS161和与非门设计,74LS00为2输 入与非门,74LS30为8输入与非门。 74LS161为4位二进制加法计数器,其引脚图及功能表如下。

三、实验原理图 1.由4个D触发器改成的4位异步二进制加法计数器 2.由74LS161构成的十进制计数器

四、实验结果及数据处理 1.4位异步二进制加法计数器实验数据记录表 2. 画出你所设计的任意进制计数器的线路图,并说明设计思路。

设计思路:四进制为四个输出Q3Q2Q1Q0=0000,0001,0010,0011循环,第一个无效状态为0100 1,置位法设计四进制计数器:当检测到输入为0011时,先输出显示3,然后再将D 置于低电位,计数器输出Q3Q2Q1Q0复位。 2,复位法设计四进制计数器:当检测到第一个无效状态0100时,通过与非门的反馈计数器的Cr首先置于低电平使计数器复位为0000。 五、思考题 1. 由D触发器和JK触发器组成的计数器的区别? 答:D触发器是cp上升沿触发,JK触发器是下降沿触发。 2. 74LS161是同步还是异步,加法还是减法计数器? 答:同步。加法计数器。 3. 设计十进制计数器时将如何去掉后6个计数状态的? 答:加一个与非门形成负反馈。当计数到第一个无效状态Q3Q2Q1Q0==1010时,Q3和Q1全为1,Q1,Q3接与非门,输出作为复位信号,使所有触发器复位,从而去掉了后6个状态。

数电实验四

实验四:时序逻辑电路(集成寄存器和计数器) 一、实验目的: 1.熟悉中规模集成计数器的逻辑功能和使用方法;掌握用集成计数器组成任意模数为M的计数器。 2.加深理解移位寄存器的工作原理及逻辑功能描述;熟悉中规模集成移位寄存器的逻辑功能和使用方法;掌握用移位寄存器组成环形计数器的基本原理和设计方法。 二、知识点提示和实验原理: ㈠计数器: 计数器的应用十分广泛,不仅可用来计数,也可用于分频、定时和数字运算。计数器种类繁多,根据计数体制不同,计数器可分为二进制计数器和非二进制计数器两大类。在非二进制计数器中,最常用的是十进制计数器,其他的称为任意进制计数器。根据计数器的增减趋势的不同,计数器可分为加法计数器和减法计数器。根据计数脉冲引入方式不同,计数又可分为同步计数器和异步计数器。 在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 用集成计数器实现任意M进制计数器:一般情况任意M进制计数器的结构分为3类,第一种是由集成二进制计数器构成,第二种为移位寄存器构成的移位寄存型计数器,第三种为集成触发器构成的简单专用计数器。 当M较小时通过对集成计数器的改造即可以实现,当M较大时,可通过多片计数器级联实现。 实现方法:(1)当所需计数器M值小于集成计数器本身二进制计数最大值时,用置数(清零)法构成任意进制计数器;⑵当所需计数器M值大于集成计数器本身二进制计数最大值时,可采用级联法构成任意进制计数器。 常用的中规模集成器件:4位二进制计数器74HC161,十进制计数器74HC160,加减计数器74HC191、74HC193,异步计数器74LS290。所有芯片的电路、功能表见教材。 ㈡寄存器: 寄存器用来寄存二进制信息,将一些待运算的数据、代码或运算的中间结果暂时寄存起来。按功能划分,寄存器可分为数码寄存器和移位寄存器两大类。 数码寄存器用来存放数码,一般具有接收数码、保持并清除原有数码等功能,电路结构和工作原理郡比较简单。而移位寄存器除具有存放数码的功能以外,还具备将寄存的数码实现移位的功能,即在时钟脉冲CLK作用下,能够把寄存器中存放的数码依次左移或右移。由于将二进制数左移一位等于乘2。右移一位等于除2,因此,移位寄存器可用于二进制数的乘、除运算。按照所存放数码的输入、输出方式的不同,移位寄存器可有四种工作方式:串行输入、串行输出,串行输入、并行输出,并行输入、串行输出,并行输入、并行输出。 中规模集成4位双向移位寄存器74HC194 ,具有左移、右移、置数、保持和清除功能。74HC194的功能见教材。

四位二进制同步加法计数器(缺0011 0100 0101 0110)

成绩评定表

课程设计任务书

摘要 本次课设题目为四位二进制加法计数器(缺0011 0100 0101 0110)。 首先在QuartusII8.1中建立名为count16的工程,用四位二进制加法计数器的VHDL语言实现了四位二进制加法计数器的仿真波形图,同时进行相关操作,锁定了所需管脚,将其下载到实验箱。 然后,在Multisim软件中,通过选用四个时钟脉冲下降沿触发的JK触发器和同步电路,画出其时序图,卡诺图,建立相关方程,做出相关计算,完成四位二进制加法计数器(缺0011 0100 0101 0110)的驱动方程。在Multisim软件里画出了四位二进制加法计数器的逻辑电路图。经过运行,分析由红绿灯的亮灭顺序及状态,和逻辑分析仪里出现波形图。说明四位二进制加法计数器顺利完成。 关键词:计数器;VHDL语言;仿真;触发器。

目录 一、课程设计目的 (1) 二、设计框图 (1) 三、实现过程 (2) 1、QUARTUS II实现过程 (2) 1.1建立工程 (2) 1.2编译程序 (7) 1.3波形仿真 (10) 1.4 仿真结果分析 (14) 1.5引脚锁定与下载 (14) 2、MULTISIM实现过程 (16) 2.1求驱动方程 (16) 2.2画逻辑电路图 (19) 2.3逻辑分析仪的仿真 (20) 2.4结果分析 (21) 2.5自启动判断 (22) 四、总结 (23) 五、参考书目 (24)

一、课程设计目的 1 了解同步加法计数器工作原理和逻辑功能。 2 掌握计数器电路的分析、设计方法及应用。 3 学会正确使用JK 触发器。 二、设计框图 状态转换图是描述时序电路的一种方法,具有形象直观的特点,即其把所用触发器的状态转换关系及转换条件用几何图形表示出来,十分清新,便于查看。 在本课程设计中,四位二进制同步加法计数器用四个CP 下降沿触发的JK 触发器实现,其中有相应的跳变,即跳过了0011 0100 0101 0110四个状态,这在状态转换图中可以清晰地显示出来。具体结构示意框图和状态转换图如下: 1010 101111001101111011110 /1 /1000 101101110010000100000/0/0/0/0/0/0/0/0/0/????←????←????←????←????←↓↑???→????→????→????→????→? B:状态转换图

约翰逊计数器

环形计数器是由移位寄存器加上一定的反馈电路构成的,用移位寄存器构成环形计数器的一般框图见图23-5-1,它是由一个移位寄存器和一个组合反馈逻辑电路闭环构成,反馈电路的输出接向移位寄存器的串行输入端,反馈电路的输入端根据移位寄存器计数器类型的不同,可接向移位寄存器的串行输出端或某些触发器的输出端。 图23-5-1 移位寄存器型计数器方框图 23.5.1 环形计数器 23.5.1.1 电路工作原理 图23-5-2为一个四位环形计数器,它是把移位寄存器最低一位的串行输出端Q1反馈到最高位的串行输入端(即D触发器的数据端)而构成的,环形计数器常用来实现脉冲顺序分配的功能(分配器)。 假设寄存器初始状态为[Q4Q3Q2Q1]=1000,那么在移位脉冲的作用下,其状态将按表23-11 中的顺序转换。 当第三个移位脉冲到来后,Q1=1,它反馈到D4输入端,在第四个移位脉冲作用下Q4=1,回复到初始状态。表23-11中的各状态将在移位脉冲作用下,反复在四位移位寄存器中不断循环。

由上述讲讨论可知,该环形计数的计数长度为N=n。和二进制计数器相比,它有2n-n个状态没有利用,它利用的有效状态是少的。 23.5.1.2 状态转换图和工作时序 表23-11中是以1000为初始状态的,它所对应的状态转换图见图23-5-3。如果移位寄存器中的初始状态不同,就会有不同的状态转换图。图23-5-4给出了四位环形计数器可能有的其它几种状态转换图。 图23-5-3 状态转换图 (a) (b) (c) (d) 图23-5-4 四位环行计数器其它的状态转换图 图23-5-4(a)、(b)、(c)三个状态转换图中各状态是闭合的,相应的时序为循环时序。当计数器处于图23-5-4(d)所示的状态0000或1111时,计数器的状态将不发生变化。这两个状态称为悬态或死态。 四位环形计数器可能有这么多不同的循环时序,是我们不希望的,只能从这些循环时序中选出一个来工作,这就是工作时序,或称为正常时序,或有效时序。其它末被选中的循环时序称为异常时序或无效时序。一般选图23-5-3的时序为工作时序,因为它只循环一个“1”,不用经过译码就可从各触发器的Q端得到顺序脉冲输出,参看图23-5-5。

同步二进制加法计数器

同步二进制加法计数器 F0302011 5030209303 刘冉 计数器是用来累计时钟脉冲(CP脉冲)个数的时序逻辑部件。它是数字系统中用途最广泛的基本部件之一,几乎在各种数字系统中都有计数器。它不仅可以计数,还可以对CP 脉冲分频,以及构成时间分配器或时序发生器,对数字系统进行定时、程序控制操作。此外,还能用它执行数字运算。 1、计数器的特点: 在数字电路中,把记忆输入CP脉冲个数的操作叫做计数,能实现计数状态的电子电路称为计数器。特点为(1)该电路一般为Moore型电路,输入端只有CP信号。 (2)从电路组成看,其主要组成单元是时钟触发器。 2、计数器分类 1) 按CP脉冲输入方式,计数器分为同步计数器和异步计数器两种。 同步计数器:计数脉冲引到所有触发器的时钟脉冲输入端,使应翻转的触发器在外接的CP脉冲作用下同时翻转。 异步计数器:计数脉冲并不引到所有触发器的时钟脉冲输入端,有的触发器的时钟脉冲输入端是其它触发器的输出,因此,触发器不是同时动作。 2) 按计数增减趋势,计数器分为加法计数器、减法计数器和可逆计数器三种。 加法计数器:计数器在CP脉冲作用下进行累加计数(每来一个CP脉冲,计数器加1)。 3) 按数制分为二进制计数器和非二进制计数器两类。 二进制计数器:按二进制规律计数。最常用的有四位二进制计数器,计数范围从0000到1111。 异步加法的缺点是运算速度慢,但是其电路比较简单,因此对运算速度要求不高的设备中,仍不失为一种可取的全加器。同步加法优点是速度快,虽然只比异步加法快千分之一甚至几千分之一秒,但对于计数器来讲,却是十分重要的。所以在这个高科技现代社会中,同步二进制计数器应用十分广泛。 下图为三位二进制加法计数器的电路图。 图1 三位二进制计数器 图示电路为对时钟信号计数的三位二进制加法计数器或称为八进制加法计数器。 该电路的经典分析过程: 1.根据电路写出输出方程、驱动方程和状态方程 2. 求出状态图 3.检查电路能否自启动 4.文字叙述逻辑功能 解:

四位二进制加法计数器课程设计

成绩评定表 学生姓名郝晓鹏班级学号1103060129 专业通信工程课程设计题目四位二进制加法 计数器 评语 组长签字: 成绩 日期20 年月日

课程设计任务书 学院信息科学与工程学院专业通信工程 学生姓名郝晓鹏班级学号1103060129 课程设计题目四位二进制加法计数(缺0010 0011 1101 1110) 实践教学要求与任务: 1、了解数字系统设计方法。 2、熟悉VHDL语言及其仿真环境、下载方法。 3、熟悉Multisim仿真环境。 4、设计实现四位二进制加计数(缺0010 0011 1101 1110) 工作计划与进度安排: 第一周:熟悉Multisim及QuartusII环境,练习数字系统设计方法。包括采用触发器设计和超高速硬件描述语言设计,体会自上而下、自下而上设计 方法的优缺点 第二周:1.在QuartusII环境中仿真实现四位二进制加计数(缺0100 0101 1001 1010 )。 2.在Multisim环境中仿真实现四位二进制加计数,缺(0100 0101 1001 1010),并通过虚拟仪器验证其正确性。 指导教师: 201 年月日专业负责人: 201 年月日 学院教学副院长: 201 年月日

摘要 本文采用在MAXPLUSⅡ环境中用VHDL语言实现四位二进制加法计数(缺0010 0011 1101 1110),在仿真器上显示结果波形,并下载到目标芯片上,在实验箱上观察输出结果。在Multisim环境中仿真实现四位二进制加法计数器(缺0010 0011 1101 1110),并通过虚拟仪器验证其正确性。 关键词:MAXPLUSⅡ环境;VHDL语言;四位二进制加计数;Multisim环境

实验四_4_位计数器设计

实验四4 位计数器设计 1. 实验目的 学习quartusii 和modelsim 的使用方法; 学习原理图和veriloghdl 混合输入设计方法; 掌握4位计数器设计的设计及仿真方法。 2. 实验原理 设计其中的计数器模块CNT4E和数码管译码驱动模块DECL7S勺verilogHDL代码,并作出整个系统仿真。 2.1 4位计数器模块代码 module CNT4B(out, CLK, RST); // output out; // in put CLK, RST; // reg [3:0] out; // always (posedge CLK or n egedge RST) // begin if(!RST) // out <= 4'dO; else out <= out + 1; // end en dmodule 低电平复位 每一个clk计数 效果图: 定义模块名和各个端口 定义输出端口 定义输入时钟和复位 定义四位计数器 上升沿时钟和下降沿复位

2.2七段数码管代码 module segled(out1,a); // in put [3:0]a; // output [6:0]out1; // reg [6:0]out1; //reg always(a) // begin case(a) //case 4'b0000:out1<=7'b0111111; 4'b0001:out1<=7'b0000110; 4'b0010:out1<=7'b1011011; 4'b0011:out1<=7'b1001111; 4'b0100:out1<=7'b1100110; 4'b0101:out1<=7'b1101101; 4'b0110:out1<=7'b1111101; 4'b0111:out1<=7'b0000111; 4'b1000:out1<=7'b1111111; 4'b1001:out1<=7'b1101111; 4'b1010:out1<=7'b1110111; 4'b1011:out1<=7'b1111100; 4'b1100:out1<=7'b0111001; 4'b1101:out1<=7'b1011110; 4'b1110:out1<=7'b1111001; 4'b1111:out1<=7'b1110001; endcase end en dmodule // 模 块结束效果图: 定义模块名和输入输出端口 输入一个3位矢量 输出一个6位矢量 型变量用于always语句 语句用于选择输出 CNT4B:b2v inst 敏感信号a

环形计数器和扭环形计数器设计

本科毕业论文(设计、创 作) 题目:环形计数器和扭环形计数器设计 学生姓名:学号: 院(系):电子信息工程学院专业:通信工程 入学时间:年月 导师姓名:职称/学位: 导师所在单位: 完成时间:2014年5月

环形计数器和扭环形计数器设计 摘要 现代世界的快速发展,夜生活已成为大多数城市不可缺少的生活,在夜生活中,五彩斑斓,形状不断变化的LED灯走入了大家的生活。而各种形状的LED灯,随着技术的不断发展,EDA设计得到不断地发展和应用,LED灯所表示的图案多种多样,LED灯中最简单的就数流水灯,而流水灯可以由环形计数器或扭环形计数器控制。本文以环形计数器和扭环形计数器为设计对象,根据其相关规律,设计其运行电路,以及用verilog硬件描述语言实现。内容主要涉及计数器的循环与自启动以及最后整个计数器的检测方案和仿真。本设计可以实现计数器的一些简单的控制,并用modelsim进行仿真。 关键词:环形计数器和扭环形计数器设计;Verilog;modelsim。

Twisted ring counter ring counter and design Abstract The rapid development of the modern world, night life has become indispensable in the life most of the city, in the nightlife, colorful, shape changing LED lights went into people's lives. And various shapes of LED lights, with the continuous development of technology, EDA design get continuously development and application of LED lamp represents pattern is varied, the most simple several water light LED lights, lights and running water can be controlled by the ring counter or twisting the ring counter. This article is based on the circular counter and twisting the ring counter as the design object. According to the counter relevant laws , the counter is to design the operation circuit .this design adopts hierarchical method and verilog hardware description language to realize. This article is mainly related to counter circulation and since the start and final of the test scheme and simulationThis design can realize some simple control counter, and modelsim simulation Keywords: ring counter and twisting the ring counter design ;Verilog; modelsim.

十进制4位加法计数器设计

洛阳理工学院 十 进 制 4 位 加 法 计 数 器 系别:电气工程与自动化系 姓名:李奇杰学号:B10041016

十进制4位加法计数器设计 设计要求: 设计一个十进制4位加法计数器设计 设计目的: 1.掌握EDA设计流程 2.熟练VHDL语法 3.理解层次化设计的内在含义和实现 设计原理 通过数电知识了解到十进制异步加法器的逻辑电路图如下 Q3 则可以通过对JK触发器以及与门的例化连接实现十进制异步加法器的设计 设计内容 JK JK触发器的VHDL文本描述实现: --JK触发器描述 library ieee; use ieee.std_logic_1164.all; entity jk_ff is

port( j,k,clk: in std_logic; q,qn:out std_logic ); end jk_ff; architecture one of jk_ff is signal q_s: std_logic; begin process(j,k,clk) begin if clk'event and clk='0' then if j='0' and k='0' then q_s <= q_s; elsif j='0' and k='1' then q_s <= '0'; elsif j='1' and k='0' then q_s <= '1'; elsif j='1' and k='1' then q_s <= not q_s; end if; end if; end process; q <= q_s; qn <= not q_s; end one; 元件门级电路: 与门VHDL文本描述实现: --与门描述library ieee; use ieee.std_logic_1164.all;

实验五 含异步清零和同步使能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。】

基于FPGA的环形计数器设计

龙源期刊网 https://www.wendangku.net/doc/f18755050.html, 基于FPGA的环形计数器设计 作者:段品凡郭昭利王彦博张哲曾健于海霞 来源:《电脑知识与技术》2019年第09期 摘要:设计一个能自启动的模8右移扭环形计数器和模4右移环形计数器,以Verilog语言进行程序编写,并设以FPGA应用设计为基础,使用Quartus Ⅱ进行仿真。 关键词:FPGA;Verilog;Quartus Ⅱ。 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)09-0217-02 在信息化时代的今天,无论是工厂的生产,还是日常生活,自动化的程度越来越高,在许多场合,人,已不再是必须主角,而代替人类完成诸多工作的是高度自动化的设备,而其中关键的一环便是计数器。 1 原理 1.1 FPGA简介 以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多數的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。 1.2 计数模块简介 此模块为本次设计的主模块,由两个小模块IC181模块(模8右移扭环形计数器模块)和IC182模块(模4右移环形计数器模块)组成,完成本设计的计数功能。其中,扭环形计数器又称约翰逊计数器,它具有电路结构简单,工作速度快且循环码等优点,因而应用较广。 2 总体设计 2.1 总体框图 2.2 总体流程图 3 具体设计

设计一个四位二进制计数器

1、要求:设计一个四位二进制计数器,将计数结果由数码管显示,显示结果为十进制数。数码管选通为低电平有效,段码为高电平有效。 分析:VHDL 描述包含五部分:计数器、将四位二进制数拆分成十进制数的个位和十位、二选一的数据选择器、七段译码、数码管选通控制信号 线定义为信号 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter3 is Port ( clk:in STD_LOGIC; clk1 : in STD_LOGIC; clr : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; scanout:out std_logic_vector(1 downto 0); ledout:out std_logic_vector(6 downto 0)); end counter3; architecture Behavioral of counter3 is signal cnt:std_logic_vector(3 downto 0); signal cnt1:std_logic_vector(3 downto 0); signal cnt2:std_logic_vector(3 downto 0); signal hex:std_logic_vector(3 downto 0); signal scan:std_logic_vector(1 downto 0); en clr

环形计数器和扭环形计数器设计

本科结业论文(设计、创作) 令狐采学 题目:环形计数器和扭环形计数器设计 学生姓名:学号: 院(系):电子信息工程学院专业:通信工程 入学时间:年月 导师姓名:职称/学位: 导师所在单位: 完成时间:年 5 月 环形计数器和扭环形计数器设计 摘要 现代世界的快速成长,夜生活已成为年夜大都城市不成缺少的生活,在夜生活中,五彩斑斓,形状不竭变更的LED灯走入了年夜家的生活。而各种形状的LED灯,随着技术的不竭成长,EDA设计获得不竭地成长和应用,LED灯所暗示的图案多种多样,LED灯中最简单的就数流水灯,而流水灯可以由环形计数器或扭环形计数器控制。本文以环形计数器和扭环形计数器为设计对象,根据其相关规律,设计其运行电路,以及用verilog硬件描述语言实现。内容主要涉及计数器的循环与自启动以及最后整个计数器的检测计划和仿真。本设计可以实现计数器的一些简单的控制,并用modelsim 进行仿真。 关键词:环形计数器和扭环形计数器设计;Verilog;modelsim。 Twisted ring counter ring counter and design Abstract The rapid development of the modern world, night life has

become indispensable in the life most of the city, in the nightlife, colorful, shape changing LED lights went into people's lives. And various shapes of LED lights, with the continuous development of technology, EDA design get continuously development and application of LED lamp represents pattern is varied, the most simple several water light LED lights, lights and running water can be controlled by the ring counter or twisting the ring counter. This article is based on the circular counter and twisting the ring counter as the design object. According to the counter relevant laws , the counter is to design the operation circuit .this design adopts hierarchical method and verilog hardware description language to realize. This article is mainly related to counter circulation and since the start and final of the test scheme and simulationThis design can realize some simple control counter, and modelsim simulation Keywords: ring counter and twisting the ring counter design ;Verilog; modelsim. 目录 1.引言1 2.设计任务和要求1 2.1设计任务2 2.2设计要求3 3.设计原理3 3.1环形计数器界说3 3.2环形计数器工作原理3 3.3扭环形计数器界说3 3.4扭环形计数器工作原理3 4.环形计数器的设计3 5.扭环形计数器设计6

四位二进制加法计数器

学院信息学院专业通信工程姓名陈洁学号02 设计题目数字系统课程设计 内容四位二进制加法计数器 技术参数和要求0000→0001→0010→0011→0110→0111→1000→1001→1010→1011→1100→→1101→1110→1111→0000 缺0100→0101 设计任务 1.按要求设计VHDL程序, 2.在Xinlinx Ise环境中运行程序并输出仿真波形。 工作进度和安排第18周: 1.学习Xinlinx Ise软件知识,熟悉软件相关操作; 2.学习multsim软件知识,熟悉其在画逻辑电路时的应用; 3.查阅相关资料,学习时序逻辑电路设计知识。 第20周: 1.按要求编写程序代码,; 2.运行并输出仿真波形; 3.程序下载到电路板测试; 4.利用multsim软件,设计时序电路; 5.运行并验证结果; 6.撰写报告。 指导教师(签字): 年月日学院院长(签字): 年月日

目录 一.数字系统简介 (3) 二.设计目的和要求 (3) 三.设计内容 (3) 四.VHDL程序设计 (3) 五.波形仿真 (11) 六. 逻辑电路设计 (12) 六.设计体会 (13) 七.参考文献 (13)

一.数字系统简介 在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统的设计分解为逻辑设计(前端),电路实现(后端)和验证桑相互独立而又相关的部分。由于逻辑设计的相对独立性就可以把专家们设计的各种数字逻辑电路和组件建成宏单元或软件核,即ip库共设计者引用,设计者可以利用它们的模型设计电路并验证其他电路。VHDL这种工业标准的产生顺应了历史潮流。 二.设计目的和要求 1、通过《数字系统课程设计》的课程实验使电子类专业的学生能深入了解集成中规 模芯片的使用方法。 2、培养学生的实际动手能力,并使之初步具有分析,解决工程实际问题的能力。三.设计内容 四位二进制加计数,时序图如下: 0000→0001→0010→0011→0110→0111→1000→1001→1010→1011→1100→→1101→1110→1111 →0000 缺0100→0101 。由JK触发器组成4位异步二进制加法计数器。 四.VHDL程序设计 四位二进制加计数,缺0100,0101(sw向上是0(on);灯亮为0) LIBRARY IEEE; USE entity count10 is PORT (cp,r:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='0' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="0011" THEN count <="0110"; ELSE count <= count +1; END IF; end if; END PROCESS; q<= count; end Behavioral;

用移位寄存器74LS194实现7位串行左移并行转换电路、四位环形计数器

数字电子技术基础实验 实验项目:移位寄存器 班级:电气1804姓名:学号:0121811350304 上课时间:2020年6月13日 一、本项目的实验目的: 1.掌握4位双向移位寄存器的逻辑功能和使用方法; 2.熟悉用移位寄存器和计数器的应用. 二、实验内容及步骤: 1.7位串行/左移并行转换电路图:用2个移位寄存器(74LS194)和门电路(不限制)实现出7位串行/左移转换电路,其中用连续脉冲触发,选用合适的频率。1)设计电路图: 2)分析电路的工作原理: 如图,设从左到右74LS194的输入端分别为D0-D7,对应输出端为Q0-Q7,D0-D6接“1”,D7接“0”,对应为11111110。两S1接“1”,Q0和Q1相与再非运算,接入两S0。左边SL接Q4,将两个74LS194级联起来,右边SL接输入,即串行输入。开始时,由于Q0和Q1为“0”,经过变换向两S0输入“1”,又S1为“1”,Q0-Q7被置数为11111110,其中Q0和Q1相与后作为一个信号输出,即并行输出实际为1111110,7个信号。下一个上升沿到来时,已有Q0和Q1的输出经运算向两S0输入“0”,即S1=1,S0=0,输出开始左移,设右边的输入一直是SL=1,那么输出变成1111101。接下来一直左移,直到第一个“0”信号移到Q1,这时,输出是0111111,

Q0=1,Q1=0,向两S0输入1,又S1=1,电路重新置数为1111110。以上为一个循环,一个循环经过7个时钟脉冲,有7个输出状态,并且输出信号左移,也实现了串行输入,并行输出,所以该电路是7位串行/左移并行转换电路。 3)清零后观察输出状态,记录输出结果填入表中。 CP Q0Q1Q2Q3Q4Q5Q6Q7功能 000000000清零 111111110置数 211111101送数 311111011 411110111 511101111 611011111 710111111 801111111 911111110置数 2.四位环形计数器:用一片移位寄存器(74LS194)及门电路(不限制)设计具 有自启动功能的、有效状态分别为1000,0100,0010,0001(Q 0Q 1 Q 2 Q 3 )的四位右 移环形计数器,其中用连续脉冲触发,选用合适的频率。1)设计电路图:

五位纽环计数器

五比特纽环计数器设计 一、设计要求: 用D触发器来设计一个五比特纽环计数器要求用观察其计数器序列;2)列出至少三个制约系统正常工作的最高频率的因素;3估计系统的最高工作频率。 二、设计原理: 纽环计数器又叫作约翰逊计数器,五位纽环计数器由五个D触发器构成,后四位D触发器的输入由分别由前一个的触发器的输出作为输入,而最高位的输入由最低位的输出经过反向后输入,因此五位纽环计数器的有效状态位有2n个(这里n=5)所以有十个有效状态,所以有32-10=22个状态是非法的。我们使用五位计数器就是要使它在正常状态中工作,才能达到理想的工作状态,如果进入了非法状态,那么计数器就不能正常工作了。所以要使(B’00000’)成为初始状态这样才能使得计数器进入非法状态后经过初始才能使计数器回到正常状态中去。因此根据这个原理我们可以建立初步的设计思想。 三、实验过程 首先根据设计要求对五位纽环计数器的工作状态进行分析,通过计算可以得出该计数器有以下几个有效状态: 纽环计数器的真值表

根据上面的真值表利用AHDL硬件设计语言就可以在QuartusⅡ软件中进行设计。在设计中除了需要满足正常状态的循环计数以外,我们还应该注意计数器进入非法状态后的工作情况,如果进入非法状态系统就不会回到正常工作状态了,这就需要在设计过程中对非法状态进行编程,以便使得系统进入非法状态后能自动回到正常状态。这可以运用AHDL中的CASE语句,把非法状态区分。(程序见附表) 编程工作完成后就需要进行编译,运用QuartusⅡ软件中的编译工具可以对设计进行编译来检查所编程序的正确与否以便及时修改。 编译成功后下一步就是仿真,来验证设计是否满足题目所提出的要求。在设计中Mem[]表示触发器的输出,T0—T9表示计数器在各有效状态时产生的脉冲,这可以作为计数器的解码器表示计数器计数到了那个状态。的通过仿真图可以看见Mem[]的确是按照真值表的内容输出的,T0—T9在每个状态时有且只有一个脉冲输出。可见设计是满足题目需要的。 在仿真波形图中我们可以看到若计数器工作在正常循环状态,那么解码器就可以输出瀑布型脉冲来显示当前计数状态。我们可以借此来进行逻辑控制。 作为设计最终我们要投入实际工作,所以要对设计工作状态进行必要的时序分析。作为计数器我们要关心它的最大计数频率。因此利用时序分析工具可以看到最大工作频率。 由下图可以看见该计数器工作的最大频率为422.12MHZ

四位二进制计数器

四位二进制计数器设计 班级:电子S102 姓名刘利勇学号:103511 一:实验目标 掌握用VHDL语言设计异步复位、同步使能的四位二进制加法计数器的编程方法, RST是异步清零信号,高电平有效;CLK是时钟信号;ENA是同步使能信号,高电平使能。OUTY是4位数据输出端。COUT是进位端。在复位信号为低电平,使能信号为高电平并且有时钟输入的时候,计数器自加,直到溢出,自动复位。 二:实验仪器 PC机一台,实验箱一套 三:实验步骤 1、新建一个工程目录,在该工程目录下新建一个文本输入文件。 2、在新建的文件中输入以下实验程序,并把该文件以CNT4B.VHD为文件名保存在该新建的工程文件夹下。

3、把该文本文件设置成当前文件。 4、运行编译器,检测该文本文件的错误,直到编译通过。 5、新建波形文件,在该文件中输入信号节点,设置仿真时间,运行仿真器,观测仿真波形。

6、软件仿真正确无误后,选择目标器件。 7、引脚锁定。其中时钟信号选择1引脚,使能引脚和复位引脚分别接一位拨动开关。溢出端接一个发光二极管,数据输出端接一个数码管。数据的高位接数码管的高位,数据的低位接数码管的低位。 9、重新编译。

10、编程下载,硬件调试。观测硬件结果,复位波动开关置为低电平,使能波动开关置为高电平,则数码管依次循环显示0到F,显示到F时,LED灯亮,说明发生溢出进位。当复位端有效时,计数器复位。使能端为低电平时,计数器不计数。 四、实验注意事项 1、注意输入程序后保存,以VHD为后缀名保存,不要使用默认保存格式,否则编译不通过。 2、引脚锁定时,要把输出端的高位和数码管的高位缩地,低位和低位锁定。这样才能按从0到F的顺序自加1显示。否则会数码管译码错误,会出现数字跳变。

4位同步二进制加法计数器

4位同步二进制加法计数器 一、实验目的 1、熟悉在EDA平台上进行数字电路集成设计的整个流程。 2、掌握Max+PlusⅡ软件环境下简单的图形、VHDL文本等输入设计方法。 3、熟悉VHDL设计实体的基本结构、语言要素、设计流程等。 4、掌握利用Max+PlusⅡ的波形仿真工具验证设计的过程。 5、学习使用JTAG接口下载逻辑电路到可编程芯片,并能调试到芯片正常工作为止。 二、实验设备 1.软件 操作系统:Windows 2000 EDA软件:MAX+plus II 10.2 2.硬件 EDA实验箱:革新EDAPRO/240H 三、实验原理 1.设计分析 4位同步二进制加法计数器的工作原理是指当时钟信号clk的上升沿到来时,且复位信号clr低电平有效时,就把计数器的状态清0。 在clr复位信号无效(即此时高电平有效)的前提下,当clk的上升沿到来时,如果计数器原态是15,计数器回到0态,否则计数器的状态将加1. 2.VHDL源程序 library ieee; use ieee.std_logic_1164.all; entity cnt4e is port(clk,clr:in std_logic; cout:out std_logic; q:buffer integer range 0 to 15); end cnt4e; architecture one of cnt4e is begin process(clk,clr) begin if clk'event and clk='1'then if clr='1'then if q=15 then q<=0; cout<='0'; elsif q=14 then q<=q+1; cout<='1'; else q<=q+1; end if; else q<=0;

设计一四位计数器

学院:信息技术学院班级: 专业:电子信息科学与技术姓名: 日期:学号: 1、熟悉行为级语法; 2、熟悉有限状态机 设计一四位计数器,进行仿真,并检测输出结果; 提示:在时钟上升沿,如果复位信号有效,则复位为0,如果复位信号无效,则计数器需要加一。 完成一个序列信号电路检测器,检测信号为10010,当检测到此序列时输出端口输出高电平,其余时间输出低电平。 提示:先画出状态转换图或写出状态转换表,根据状态表或者状态图完成代码的设计; 编写测试模块对该功能模块进行仿真。要求实验报告包括完整的状态转化图或者转化表。 序列信号电路检测器: module mian (z, x, clock, clear); output z; reg z; input clock, clear; input x; parameter s0 = 3'd0, s1 = 3'd1,

s2 = 3'd2, s3 = 3'd3, s5 = 3'd5, s4 = 3'd4; reg [2:0] state; reg [2:0] next_state; always @(posedge clock) if(clear) state <= s0; else state <= next_state; always @(state) begin case(state) s0: show = 0; s1: show = 0; s2: show = 0; s3: show = 0; s4: show = 0; s5: show = 1; endcase end always @(x or state) begin case(state) s0: if(x == 0) next_state = s0; else next_state = s1;

相关文档
相关文档 最新文档