十进制加法计数器xilinx抓图

合集下载

VerilogHDL十进制计数器实验Quartus非常详细的步骤

VerilogHDL十进制计数器实验Quartus非常详细的步骤

实验二十进制计数器实验该实验将使用Verilog 硬件描述语言在DE2-70 开发平台上设计一个基本时序逻辑电路——1 位十进制计数器。

通过这个实验,读者可以了解使用Quartus 工具设计硬件的基本流程以及使用Quartus II 内置的工具进行仿真的基本方法和使用SignalTap II 实际观察电路运行输出情况。

SignalTap II 是Quartus 工具的一个组件,是一个片上的逻辑分析仪,可以通过JTAG 电缆将电路运行的实际输出传回Quartus 进行观察,从而省去了外界逻辑分析仪时的很多麻烦。

实验步骤3.1建立工程并完成硬件描述设计1. 打开Quartus II 工作环境,如图3-1 所示。

图3-1 Quartus II工作环境界面2. 点击菜单项File->New Project Wizard 帮助新建工程。

参看图3-2。

图3-2 选择New Project Wizard打开Wizard 之后,界面如图3-3 所示。

点击Next,如图3-3。

第23 页共208 页图3-3 New Project Wizard界面3. 输入工程工作路径、工程文件名以及顶层实体名。

这次实验会帮助读者理解顶层实体名和工程名的关系,记住目前指定的工程名与顶层实体名都是Counter10,输入结束后,如图3-4 所示。

点击Next。

图3-4输入设计工程信息4. 添加设计文件。

界面如图3-5 所示。

如果用户之前已经有设计文件(比如.v 文件)。

第24 页共208 页那么再次添加相应文件,如果没有完成的设计文件,点击Next 之后添加并且编辑设计文件。

图3-5添加设计文件5. 选择设计所用器件。

由于本次实验使用Altera 公司提供的DE2-70 开发板,用户必须选择与DE2-70 开发板相对应的FPGA 器件型号。

在Family 菜单中选择Cyclone II,Package 选FBGA,Pin Count 选896,Speed grade 选6,确认Available devices 中选中EP2C70F896C6,如图3-6。

二-五-十进制异步加法计数器74LS90

二-五-十进制异步加法计数器74LS90

2. 二-五-十进制异步加法计数器74LS90 ★ 从计数器命名可知:74LS90可以实现二进制、五进制加法计数功能,如果按照“低位片循环一周,向高位片进一位”的级联扩展方式,将二进制加法计数单元和五进制加法计数单元联系起来,就可以实现十进制加法计数器,此时,整个计数器组成了异步时序逻辑电路的结构,因此,74LS90被称为二-五-十进制异步加法计数器。

与74LS197的使用类似,74LS90通过级联组成十进制异步加法计数器时,也存在两种方式,下文中将详细介绍。

74LS90的芯片封装图和功能示意图如图8.3.16所示。

图8.3.17 二-五-十进制异步加法计数器74LS90 (a )芯片封装图 (b )功能示意图★ 分析图8.3.17,将得到的74LS90的管脚信息总结如下:74LS90的逻辑功能端包括2个下降沿有效的输入时钟信号端 和 、4个高有效的输入控制端 ,以及4个输出状态端 。

表8.3.10为74LS90的功能表,完整地表达了74LS90的逻辑功能。

表8.3.10 二-五-十进制异步加法计数器74LS90的功能表★ 分析表8.3.10,将得到的74LS90的逻辑功能完整总结如下:◆ 异步置9、高有效,为置数控制端。

0123 Q Q Q Q 、、、10 CLK CLK B 0A 0B 99A R R S S 、、、B 9A 9 S S 、74LS90没有提供输入数据端,当时, ,即输出状态被直接置为9。

◆ 异步清零、高有效, 为清零控制端。

◆ 计数器在不置数、不清零的前提下,时钟脉冲的下降沿工作,完成计数功能,有以下四种情况。

▲ 时钟信号从输入,则完成二进制加法计数,对应输出状态为; ▲ 时钟信号从输入,完成五进制加法计数,对应输出状态排列为 ,工作循环为000到100的递增循环, 为最高位; ▲ 时钟信号从 输入,且将二进制计数器的输出状态 作为五进制计数器的时钟信号,接入,则组成了“二进制单元先运行,五进制单元后运行”的级联结构,由此实现十进制加法计数功能,其输出状态排列为; ▲ 时钟信号从 输入,且将五进制计数器的输出最高位状态作为二进制计数器的时钟信号,接入,则组成了“五进制单元先运行,二进制单元后运行”的级联结构,由此实现的十进制加法计数器的输出状态排列为。

FPGA实验二:基于HDL的十进制计数器

FPGA实验二:基于HDL的十进制计数器

《FPGA》课程报告设计题目:基于HDL的十进制计数器学生班级:学生学号:学生姓名:指导教师:时间:成绩:一、实验目的:1.掌握基于语言的ISE设计全流程;2.熟悉、应用VerilogHDL描述数字电路;3.掌握基于Verilog的组合和时序逻辑电路的设计方法。

二、实验原理:本次实验是使用Verilog HDL进行编写十进制计数器与显示器代码而进行的实验,实验原理图如下:本次实验的内容包括十进制计数器模块,七段译码显示器模块,以及消抖模块。

十进制计数器:对输入时钟进行计数输入:CLK -------待计数的时钟CLR ---------异步清零信号,当CLR =1,输出复位为0,当CLR =0,正常计数ENA---------使能控制信号,当ENA=1,电路正常累加计数,否则电路不工作输出:SUM[3:0]---------- 计数值的个位。

即,在CLK上升沿检测到SUM=9时,SUM将被置0,开始新一轮的计数。

COUT ------------计数值的十位进位,即:只有在时钟CLK上升沿检测到SUM=9时,COUT将被置1,其余情况下COUT=0;LED显示驱动模块:输入:sum[3:0] -------待显示的数值out[6:0] ----------驱动数码管的七位数值七段数码管的字符显示真值表如下:消抖模块:三、实验过程:1.首先建立一个新的工程,添加一个新的Verilog Module,在其中编写十进制计数模块的代码,如下:module liao1(CLR,CLK,ENA,SUM,COUT);input CLR,CLK,ENA;output[3:0] SUM;output COUT;reg[3:0] SUM;reg COUT;always@(posedge CLK or posedge CLR)if(CLR)beginSUM<=4'b0000;COUT<=1'b0;endelseif(ENA)beginif(SUM==9)beginSUM<=4'b0000;COUT<=1'b1;endelsebeginSUM<=SUM+1'b1;COUT<=1'b0;endendendmodule然后执行综合,确认无误后,新建一个Test Bench WaveForm文件,进行仿真,仿真图如下:2.再新建一个Verilog Module,在其中编写七段数码显示模块的代码,如下:module liao2(SUM,out);input[3:0] SUM;output[6:0] out;reg [6:0] out;always @(SUM)begincase(SUM)4'b0000: out<=7'b0000001;4'b0001: out<=7'b1001111;4'b0010: out<=7'b0010010;4'b0011: out<=7'b0000110;4'b0100: out<=7'b1001100;4'b0101: out<=7'b0100100;4'b0110: out<=7'b0100000;4'b0111: out<=7'b0001111;4'b1000: out<=7'b0000000;4'b1001: out<=7'b0000100;default :out<=7'b0000001;endcaseendendmodule执行综合,确认无误后新建一个Test Bench WaveForm文件,进行仿真,仿真图如下:3.添加消抖模块,然后再新建一个Verilog Module,编写例化文件,制成顶层文件,其例化文件代码如下:module liao(CLK_50M,CLK,CLR,ENA,COUT,out);input CLR,CLK,ENA;input CLK_50M;output[6:0] out;output COUT;wire[3:0] SUM;debounce_module u1(CLK_50M,CLR,CLK,clk_out);liao1 u2(CLR,clk_out,ENA,SUM,COUT);liao2 u3(SUM,out);endmodule保存之后形成顶层文件:4.执行综合,确认无误后,根据实验指导书进行锁引脚操作:锁引脚完成后,修改、编辑约束文件:5.生成下载配置文件,下载到开发板进行经行验证。

基于原理图的十进制计数器的设计(FPGA)

基于原理图的十进制计数器的设计(FPGA)

实验一:基于原理图的十进制计数器设计一、 实验目的:1. 熟悉和掌握ISE Foudation 软件的使用;2. 掌握基于原理图进行FPGA 设计开发的全流程;3. 理解和掌握“自底向上”的层次化设计方法;4. 温习数字电路设计的基础知识。

二、 实验原理:完成一个具有数显输出的十进制计数器设计,原理图如图2.1所示。

图2.1 十进制计数器原理图本实验为完成设计,采用了自底向上的设计流程。

自底向上设计是一种设计程序的过程和方法,是在设计具有层次结构的大型程序时,先设计一些较下层的程序,即去解决问题的各个不同的小部分,然后把这些部分组合成为完整的程序。

自底向上设计是从底层(具体部件)开始的,实际中无论是取用已有模块还是自行设计电路,其设计成本和开发周期都优于自顶向下法;但由于设计是从最底层开始的,所以难以保证总体设计的最佳性,例如电路结构不优化、能够共用的器件没有共用。

在现代许多设计中,是混合使用自顶向下法和自顶向上法的,因为混合应用可能会取得更好的设计效果。

一般来说,自顶向下设计方法适用于设计各种规模的数字系统,而自底向上的设计方法则更适用于设计小型数字系统。

十进制计数器七段数码管显示译码器使能控制端时钟端 异步清零端FPGA1、七段数码管译码器的设计七段数码管属于数码管的一种,是由7段二极管组成。

按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阴数码管。

它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。

显示译码器,一般是将一种编码译成十进制码或特定的编码,并通过显示器件将译码器的状态显示出来。

根据显示的要求,可以得到七段显示译码器产生的各段LED输出与输入的二进制对应关系:表2.1七段字符显示真值表最小项译码器输出能产生输入变量的所有最小项,而任何一个组合逻辑函数都可以变换为最小项之和的标准形式,故采用译码器和门电路可实现任何单输出或多输出的组合逻辑函数。

FPGA实验一:基于原理图的十进制计数器设计

FPGA实验一:基于原理图的十进制计数器设计

实验一:基于原理图的十进制计数器设计一、实验目的:1.熟悉和掌握ISE Foudation软件的使用;2.掌握基于原理图进行FPGA设计开发的全流程;3.理解和掌握“自底向上”的层次化设计方法;4.温习数字电路设计的基础知识。

二、实验原理:本次实验采用的是七段数码管显示译码器和CD4CE同步十进制计数器组合的电路,实验原理图如下:本次实验采用七段数码管的字符显示真值表如下:CD4CE是同步十进制计数器,输入端有异步清零控制端CLR,工作控制使能端CE和时钟输入端C,输出端有BCD码计数值输出端Q3~Q0,进位输出端TC和输出状态标志CEO,其真值表如下图:三、实验过程:1.创建一个新的工程,并为工程新建一个原理图文件,根据实验要求绘制数码管A段LED驱动逻辑电路,并生成原理图模块符号,然后新建一个Test Bench WaveForm文件,进行仿真,查看实验是否符合真值表的内容:数码管A段LED驱动逻辑电路图2.根据步骤1绘制B、C、D、E、F、G段驱动逻辑电路,并生成相应的原理图模块符号,进行仿真,然后再根据实验要求将7个模块进行组合成七段显示译码器原理图:3.调用CD4CE计数器符号和上图中的seg7模块绘制十进制计数器原理图,然后进行仿真验证:4.执行综合,记录其中关于时钟频率、资源消耗等数据:5.根据实验指导书经行锁引脚操作,编辑引脚约束文件:6.生成下载配置文件,下载到开发板进行经行验证。

四、实验思考题:1.分析并说明本次实验所完成的工程文件结构关系。

答:本次实验采用的是自底向上的设计流程,即是先从最底层开始,逐步向上设计,所以本次实验所完成的工程文件的结构关系是一种底层与顶层结构关系。

2.如何分析仿真软件运行出的结果?答:观察实验仿真的结果,与实验要求的真值表进行对比,若符合则表示设计方案正确,否则则表示方案设计错误,需要修改设计方案。

3.在仿真激励信号的设计上组合电路和时序电路分别关注的重点是什么?为什么?答:组合电路关注当前的输入信号,而时序电路不仅要关注当前的输入信号,还需要关注上一时刻的输出的状态。

10进制加减计数器状态机的VHDL设计

10进制加减计数器状态机的VHDL设计

10进制加减计数器状态机的VHDL设计一、【设计目的】学习并掌握Quartus II 开发系统的基本操作。

掌握用Quartus II进行文本输入法进行电路设计、编译和仿真方法。

掌握CPLD/FPGA的开发流程。

掌握EDA实验开发系统的使用。

掌握状态机的原理。

掌握简单状态机的VHDL设计方法掌握计数器的设计方法。

掌握带有复位和和时钟使能的10进制计数器的原理。

掌握通用计数器的设计方法。

学习使用VHDL进行时序逻辑电路的设计。

学习利用真值表编写VHDL程序。

学习掌握7段数码显示译码器设计的原理。

掌握VHDL语言方式设计7段数码显示译码器。

学习掌握8位数码管动态扫描显示电路的原理。

掌握VHDL语言设计8位数码管动态扫描显示电路学习VHDL语言设计较复杂的电路方法。

二、【设计任务】设计要求用VHDL语言设计一个状态机,要求具有以下状态和功能中的四种或者四种以上:A.复位功能B.8、10或者16进制加法计数C.8、10或者16进制减法计数D.数码管以任何方式闪动E.8个LED灯以任何方式闪动F.蜂鸣器发声或者播放一段音乐G.并用两位数码管将结果显示出来本次设计选用的功能状态为:A.复位功能B.十进制加法计数C.十进制减法计数D.数码管闪动E.8个led灯闪动F.并用两位数码管将结果显示出来功能实现说明Clk为50MHz的时钟信号输入;rst为复位控制按键(低电平有效);en(0-2)通过三个按键分别控制3种状态(低电平有效)。

1.当en(0)=`0`时,启动加法计数并将结果动态显示到两位数码管上,同时另外的两位数码管的6段以相反方向按顺序闪烁2.当en(1)=`0`时,启动减法计数并将结果动态显示到两位数码管上,同时另外的两位数码管的6段以相反方向按顺序闪烁,闪烁方向与加法的相反;3.当en(2)=`0`时,启动LED闪烁功能,LED灯按顺序逐个流水闪动;4.当rst=`0`时,复位清零;三、【设计代码】library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-----------------------------------------------------------------------------ENTITY cnt16 ISPORT (clk : IN std_logic; --50MHz时钟信号输入rst : IN std_logic; ---复位功能输入en : IN std_logic_vector(2 DOWNTO 0); ---状态选择输入led8 : OUT std_logic_vector(7 DOWNTO 0); --各段数据输出com8 : OUT std_logic_vector(7 DOWNTO 0)); ---各位数据输出END cnt16;-----------------------*****对各个信号进行定义****------------------------------------- ARCHITECTURE arch OF cnt16 ISsignal cnt : std_logic_vector(25 downto 0 );signal data : std_logic_vector(3 downto 0);signal led8_xhdl : std_logic_vector(7 downto 0);signal com8_xhdl : std_logic_vector(7 downto 0);signal coud1 : std_logic_vector(3 downto 0);signal coud2 : std_logic_vector(3 downto 0);signal s1 : std_logic;signal s2 : std_logic;signal s3 : std_logic;signal coud : std_logic_vector(3 downto 0);signal first : std_logic_vector(3 downto 0); --0000signal second : std_logic_vector(3 downto 0); --0000 0000 0000 1001 signal jinwei: std_logic;------------------------------------------------------------------------------------------------------------- beginled8<=led8_xhdl;com8<=com8_xhdl;----------------------- *****状态控制部分*************--------------------------------------------- process(en)beginif en="110"then ----状态控制,低电平有效s1<='1';s2<='0';s3<='0';else if en="101"thens2<='1';s1<='0';s3<='0';else if en="011"thens3<='1';s1<='0';s2<='0';end if;end if;end if;end process;-------------------------------------------------------------------------------------------------------------------------------**********时钟分频部分********----------------------------------process(clk,rst)beginif(rst='0')thencnt<="00000000000000000000000000";elsif(clk'event and clk='1')thencnt<=cnt+1; -----来一个时钟信号cnt加1end if;end process;----------------------------------------------------------------------------------------------------------------------*****-加减计数器的个位-*******------------------------------- process(cnt(24),rst,s1,s2)beginif(rst='0')thenfirst<="0000";jinwei<='0';elsif(cnt(24)'event and cnt(24)='1')then ---每隔(1/50)*48=0.96s计数一次if (s1='1')thenif(first="1001")then ---10进制计数first<="0000";jinwei<='1';elsejinwei<='0';first<=first+1; ---加法计数end if;else if(s2='1')thenif(first="0000")thenfirst<="1001";jinwei<='1';elsejinwei<='0';first<=first-1; ---减法计数end if;end if;end if;end if;end process;-------------------------------------------------------------------------------------------------------------------*********-加减计数器的十位*******-------------------------- process(jinwei,rst,s1,s2)beginif(rst='0')thensecond<="0000";elsif(jinwei'event and jinwei='1')then ---每来1个位产生的进位信号则十位加(减)1if (s1='1')thenif(second="1001")thensecond<="0000";elsesecond<=second+1;end if;else if(s2='1')thenif(second="0000")thensecond<="1001";elsesecond<=second-1;end if;end if;end if;end if;end process;------------------------------------------------------------------------------------------------------------------------------------------------*****闪动数码管的计数***--------------------------------------- process(cnt(23),rst,s1,s2)beginif(rst='0')thencoud<="0000";else if(cnt(23)'event and cnt(23)='1')then ----每隔(1/50)*46=0.92s计数一次if(s1='1')thenif(coud="0101")thencoud<="0000";elsecoud<=coud+1;end if;else if(s2='1')thenif(coud="0000")thencoud<="0101";elsecoud<=coud-1;end if;end if;end if;end if;end if;end process;--------------------------------------------------------------------------------------------------------------------------***码变换****---------------------------------------------process(coud,rst)begincase coud iswhen"0000" => coud1<="1010";coud2<="1010";when"0001" => coud1<="1011";coud2<="1111";when"0010" => coud1<="1100";coud2<="1110";when"0011" => coud1<="1101";coud2<="1101";when"0100" => coud1<="1110";coud2<="1100";when"0101" => coud1<="1111";coud2<="1011";when others => coud1<="0000";coud2<="0000";end case;end process;--------------------------------------------------------------------------------------------****************显示部分***************--process(rst,s1,s2,s3,cnt(17 downto 16),cnt(25 downto 23))beginif(rst='0')thencom8_xhdl<="11110000";led8_xhdl <= "00000000";else if s1='1'or s2='1'then ----计数以及数码管闪动部分的扫描case cnt(17 downto 16) iswhen"10" => com8_xhdl<="11111110";data<=first;when"01" => com8_xhdl<="11111101";data<=second;when"00" => com8_xhdl<="01111111";data<=coud1;when"11" => com8_xhdl<="10111111";data<=coud2;end case;case data isWHEN "0000" =>led8_xhdl <= "00111111"; --0WHEN "0001" =>led8_xhdl <= "00000110"; --1WHEN "0010" =>led8_xhdl <= "01011011"; --2WHEN "0011" =>led8_xhdl <= "01001111"; --3WHEN "0100" =>led8_xhdl <= "01100110"; --4WHEN "0101" =>led8_xhdl <= "01101101"; --5WHEN "0110" =>led8_xhdl <= "01111101"; --6WHEN "0111" =>led8_xhdl <= "00000111"; --7WHEN "1000" =>led8_xhdl <= "01111111"; --8WHEN "1001" =>led8_xhdl <= "01101111"; --9WHEN "1010" =>led8_xhdl <= "00000001";WHEN "1011" =>led8_xhdl <= "00000010";WHEN "1100" =>led8_xhdl <= "00000100";WHEN "1101" =>led8_xhdl <= "00001000";WHEN "1110" =>led8_xhdl <= "00010000";WHEN "1111" =>led8_xhdl <= "00100000";WHEN OTHERS =>led8_xhdl <= "00000011";END CASE;else if s3='1'then ----8个LED灯闪动的扫描,闪动周期为0.92s-1s case cnt(25 downto 23) iswhen"000" => com8_xhdl<="11111110";led8_xhdl<="10000000" ;when"001" => com8_xhdl<="11111101";led8_xhdl<="10000000" ;when"010" => com8_xhdl<="11111011";led8_xhdl<="10000000" ;when"011" => com8_xhdl<="11110111";led8_xhdl<="10000000" ;when"100" => com8_xhdl<="11101111";led8_xhdl<="10000000" ;when"101" => com8_xhdl<="11011111";led8_xhdl<="10000000" ;when"110" => com8_xhdl<="10111111";led8_xhdl<="10000000" ;when"111" => com8_xhdl<="01111111";led8_xhdl<="10000000" ;end case;end if;end if;end if;end process;end arch;。

FPGA—基于HDL的十进制计数器设计

FPGA—基于HDL的十进制计数器设计

基于HDL 的十进制计数器设计一、 实验目的1、掌握基于语言的ISE 设计全流程;2、熟悉、应用VerilogHDL 描述数字电路;3、掌握基于Verilog 的组合和时序逻辑电路的设计方法。

4、掌握chipscope 片内逻辑分析仪的使用与调试方法。

5、设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。

二、 实验原理1、十进制计数器的设计即是设置一变量,当计数脉冲上升沿到来时,先判断是否为9,若是则置零,否则就进行加一操作。

将变量再进行一个译码操作输出到数码管显示即可。

图1 实验原理图2、数码管分为7 段和8 段,七段数码管由 7段二极管组成。

8段数码管比起7段数码管多了一个显示小数点的LED 。

数码管按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阳数码管。

它是指将一切发光二极管的阳极接到一同构成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM 接到电源VCC 上,当某一字段发光二极管的阴极为低电平相应字段就点亮。

当某一字段的阴极为高电平相应字段就不亮。

共阳端可以作为位选端,实现动态扫描。

动态扫描即是利用了人眼睛的视觉暂留现象,以合适的频率显示每一位数码管,便会产生所有数码使能控制异步清零十进制计数器七段数码管显示译时钟端FPG进管是一起点亮的错觉,数码管原理图如图:图2 共阳数码管示意图3、数码管显示数字与对应的输入数据的关系如表所示:0 8'hc01 8'hf92 8'ha43 8'hb04 8'h995 8'h926 8'h827 8'hf88 8'h809 8'h90表1 数码管显示表4、本次设计一共有11个端口:输入信号:clk -------待计数的时钟。

clr ---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数。

基于HDL的十进制计数器的设计(FPGA)

基于HDL的十进制计数器的设计(FPGA)

实验二:基于HDL十进制计数、显示系统设计一、实验目的:1.掌握基于语言的ISE设计全流程;2.熟悉、应用VerilogHDL描述数字电路;3.掌握基于Verilog的组合和时序逻辑电路的设计方法;4.具有数显输出的十进制计数器的设计。

二、实验原理:1.实验内容:设计具有异步复位,同步使能的十进制计数器,其计数结果可以通过七段数码,管发光二极管进行显示。

其系统原理图如下:2.十进制计数器模块端口信号说明:①输入信号:clk----计数器的时钟信号Clc——异步清零信号,当clc=1时,输出复位为0;当clc=0时,正常计数Ena——使能控制信号,当ena=1时,电路正常累加计数,否则电路不工作输出信号。

②输出信号:SUM[3:0]-------- 计数值的个位。

即,在CLK上升沿检测到SUM=9时,SUM将被置0,开始新一轮的计数。

COUT --------计数值的十位进位,即:只有在时钟CLK上升沿测到SUM=9时,COUT将被置1,其余情况下COUT=0;3.自顶向下的设计思路进行模块划分:整个系统要求设计的模块:十进制计数模块和数码管驱动模块,由于实验按键为实现按键防抖,所以在实验时候需要加入消抖模块:电源按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了产生这种现象而作的措施就是按键消抖。

三、实验过程:按照实验原理的设计思想,做出了以下设计代码:十进制计数器部分:module cnt10(clr,clk,ena,sum,cout);input clr,clk,ena;output[3:0] sum;output cout;reg[3:0] sum;reg cout;always @(posedge clk or posedge clr)beginif(clr)beginsum<=4'b0000;cout<=0;endelse if(ena)beginif(sum==4'b1001)beginsum<=4'b0000;cout <= 1;endelse if(sum<4'b1001)beginsum <= sum+4'b0001;cout<=0;endendendEndmodule数码管驱动模块代码:module led(out_y,sum);output [6:0] out_y;input[3:0] sum;reg [6:0] out_y;always @(sum)begincase(sum)4'b0000:out_y=7'b0111111;4'b0001:out_y=7'b0000110;4'b0010:out_y=7'b1011011;4'b0011:out_y=7'b1001111;4'b0100:out_y=7'b1100110;4'b0101:out_y=7'b1101101;4'b0110:out_y=7'b1111101;4'b0111:out_y=7'b0000111;4'b1000:out_y=7'b1111111;4'b1001:out_y=7'b1101111;default:out_y=7'b00000000;endcaseendendmodule消抖模块部分实验已经给出,最后综合模块代码:module int(clk_50,clk,rest,ena,out_y,cout );input clk_50,clk,rest,ena;output [6:0] out_y;output cout;wire [3:0] out;wire clk_out;wire [6:0] out_y;debounce_module u1(clk_50,rest,clk,clk_out); cnt10 u2(rest,clk_out,ena,out,cout);led u3(out_y,out);Endmodule根据实验要求综合:1.2.相应的引脚约束文件为:NET "clk" LOC = “V16” | PULLDOWN; NET "clk_50" LOC = "C9" ;NET "clr" LOC = "N17" ;NET "cout" LOC = "C11" ;NET "data_out<0>" LOC = "D5" ;NET "data_out<1>" LOC = "C5" ;NET "data_out<2>" LOC = "B6" ;NET "data_out<3>" LOC = "E7" ;NET "data_out<4>" LOC = "F7" ;NET "data_out<5>" LOC = "A4" ;NET "data_out<6>" LOC = "B4" ;NET "ena" LOC = "H18" ;NET "clk" CLOCK_DEDICATED_ROUTE=FALSE; 3.时序仿真为:十进制计数器仿真如下:最后例化后的结果为:思考题比较实验一与实验二的实验过程,说明原理图输入法与HDL输入法的不同的应用环境答:实验一中应用的是原理图完成十进制计数器的数显,工作量相对较大,需要绘制8张原理图,其中还不包括消抖模块。

三位的十进制加法计数器的VHDL语言

三位的十进制加法计数器的VHDL语言

三位的十进制加法计数器的VHDL语言--VHDL程序如下:LIBRARY ieee;UsE ieee。

std_logic_1164。

all;ENTITY cnt1000 IsPORT(clk : IN STD_LOGIC;clr : IN STD_LOGIC;en : IN STD_LOGIC;count : OUT I NTEGER RANGE 0 TO 999; co :OUT STD_LOGIC);END cnt1000;ARCHITECTURE a OF cnt1000 IsSIGNAL s : INTEGER RANGE 0 TO 999;BEGINPROCESS (clk, clr)BEGINIF clr = '0’ THENs 〈= 0;ELSIF (clk'EVENT AND clk = '1’) THENIF en = '1' THENIF s<999 THENs <= s + 1;ELSE s<=0;END IF;ELSEs <= s;END IF;IF s = 999 THEN co 〈='1’;ELSE co <=’0';END IF;END IF;END PROCESS;count 〈= s;END a;摘要:根据教学实践, 介绍了VHDL 硬件描述语言进行工程设计的优点。

他既是一种与实际技术相独立的语言, 不束缚于某一特定的模拟程序或数字装置上,也不把设计方法强加于设计者,他允许设计者在其使用范围内选择工艺和方法,描述能力极强, 覆盖了逻辑设计的诸多领域和层次,并支持众多的硬件模型;也是一种在数字电路教学中全新的理论联系实际的教学方法和全新的培养学生实际动手能力的有效工具。

同时简要地说明VHDL 硬件描述语言的支撑软件M ax+ Plus.并结合实例详细阐明VHDL 语言在M ax+ Plus 软件的环境下对数字电路的设计、应用方法及使用时需注意的几个方面事项。

十进制同步加法计数器

十进制同步加法计数器

性能测试
测试环境
为保证测试结果的准确性和可靠 性,需要搭建一个标准的测试环 境,包括适当的电源、时钟源、
输入信号和输出负载等。
测试方法
按照规定的测试方法,对计数器的 各项性能指标进行测试,如计数范 围、计数速度、功耗和集成度等。
测试数据记录
详细记录测试过程中的各项数据, 如输入信号的频率、电源电压、输 出信号的状态等。
THANK YOU
感谢各位观看
发。
十进制同步加法计数器是一种同步计数 器,它可以在时钟信号的控制下进行加
法运算,并输出十进制数的计数值。
Hale Waihona Puke 02十进制同步加法计数器的工作原理
同步计数器的概念
同步计数器
一种数字逻辑电路,能够按照给 定的时钟信号进行计数操作。
工作原理
在每个时钟周期内,同步计数器 对输入的时钟信号进行检测,并 根据时钟信号的变化进行计数操 作。
05
十进制同步加法计数器的性能分析
性能指标
计数范围
计数速度
计数器的最大计数值和最小计数值,即其 能计数的十进制数的范围。
计数器完成一次计数操作所需的时间,通 常以纳秒或微秒为单位。
功耗
集成度
计数器在工作过程中消耗的电能,通常以 毫瓦或瓦为单位。
计数器内部电路的规模和复杂度,通常以 门电路的数量来表示。
进位输出
当计数器达到9态时,会产生一个 进位输出信号,表示需要将这个 进位值加到更高位的计数器中。
回零操作
在每个时钟周期结束时,计数 器会自动回零,即回到0态,准
备进行下一次计数操作。
03
十进制同步加法计数器的设计
设计步骤
确定计数器的进制

10进制计数器verilog代码

10进制计数器verilog代码

以下是一个简单的10进制计数器的Verilog代码。

这个计数器在每个时钟周期内递增,并在计数到10后回滚到0。

verilog复制代码
module counter_10 (
input wire clk,
input wire reset,
output reg [3:0] count
);
always @(posedge clk or posedge reset) begin
if (reset) begin
count <= 4'b0000;
end else begin
count <= count + 1;
end
end
endmodule
在这个模块中,clk是时钟输入,reset是复位输入,count是4位的输出,表示当前的计数值。

在每个时钟上升沿,count都会递增。

当count达到10(即二进制的1010)时,它会被复位回0。

如果复位信号被激活,无论时钟状态如何,count都会被立即复位。

请注意,这是一个非常基础的计数器设计,没有包括一些更复杂的功能,比如预置值、异步/同步复位等。

如果你需要这些功能,你可能需要修改或扩展这个设计。

异步十进制加法计数器

异步十进制加法计数器

异步十进制加法计数器000有效状态:0000--1001十个状态;无效状态:1010~1111六个状态.三,集成异步计数器CT74LS290为了达到多功能的目的,中规模异步计数器往往采用组合式的结构,即由两个独立的计数来构成整个的计数器芯片.如:74LS90(290):由模2和模5的计数器组成;74LS92:由模2和模6的计数器组成;74LS93:由模2和模8的计数器组成.1.CT74LS290的情况如下.(1)电路结构框图和逻辑功能示意图(2)逻辑功能如下表7.3.1所示.注:5421码十进制计数时,从高位到低位的输出为.2,利用反馈归零法获得N(任意正整数)进制计数器方法如下:(1)写出状态SN的二进制代码.(2)求归零逻辑(写出反馈归零函数),即求异步清零端(或置数控制端)信号的逻辑表达式.(3)画连线图.举例:试用CT74LS290构成模小于十的N进制计数器.CT74LS290则具有异步清零和异步置9功能.讲解教材P215的[例7.3.1].注:CT74LS90的功能与CT74LS290基本相同.7.3.2同步计数器一,同步二进制计数器1.同步二进制加法计数器2,同步二进制减法计数器3,集成同步二进制计数器CT74LS161(1)CT74LS161的引脚排列和逻辑功能示意图注:74LS163的引脚排列和74LS161相同,不同之处是74LS163采用同步清零方式.(2)CT74LS161的逻辑功能①=0时异步清零.C0=0②=1,=0时同步并行置数.③==1且CPT=CPP=1时,按照4位自然二进制码进行同步二进制计数.④==1且CPT·CPP=0时,计数器状态保持不变.4,反馈置数法获得N进制计数器方法如下:·写出状态SN-1的二进制代码.·求归零逻辑,即求置数控制端的逻辑表达式.·画连线图.(集成计数器中,清零,置数均采用同步方式的有74LS163;均采用异步方式的有74LS193,74LS197,74LS192;清零采用异步方式,置数采用同步方式的有74LS161,74LS160;有的只具有异步清零功能,如CC4520,74LS190,74LS191;74LS90则具有异步清零和异步置9功能.等等) 试用CT74LS161构成模小于16的N进制计数器5,同步二进制加/减计数器二,同步十进制加法计数器8421BCD码同步十进制加法计数器电路分析三,集成同计数器1,集成十进制同步加法计数器CT74LS160(1)CT74LS160的引脚排列和逻辑功能示意图图7.3.3CT74LS160的引脚排列图和逻辑功能示意图(2)CT74LS160的逻辑功能①=0时异步清零.C0=0②=1,=0时同步并行置数.③==1且CPT=CPP=1时,按照BCD码进行同步十进制计数.④==1且CPT·CPP=0时,计数器状态保持不变.2.集成十进制同步加/减计数器CT74LS190其逻辑功能示意图如教材图7.3.15所示.功能如教材表7.3.10所示.集成计数器小结:集成十进制同步加法计数器74160,74162的引脚排列图,逻辑功能示意图与74161,74163相同,不同的是,74160和74162是十进制同步加法计数器,而74161和74163是4位二进制(16进制)同步加法计数器.此外,74160和74162的区别是,74160采用的是异步清零方式,而74162采用的是同步清零方式.74190是单时钟集成十进制同步可逆计数器,其引脚排列图和逻辑功能示意图与74191相同.74192是双时钟集成十进制同步可逆计数器,其引脚排列图和逻辑功能示意图与74193相同.7.3.3利用计数器的级联获得大容量N进制计数器计数器的级联是将多个计数器串接起来,以获得计数容量更大的N进制计数器.1,异步计数器一般没有专门的进位信号输出端,通常可以用本级的高位输出信号驱动下一级计数器计数,即采用串行进位方式来扩展容量.举例:74LS290(1)100进制计数器(2)64进制计数器2,同步计数器有进位或借位输出端,可以选择合适的进位或借位输出信号来驱动下一级计数器计数.同步计数器级联的方式有两种,一种级间采用串行进位方式,即异步方式,这种方式是将低位计数器的进位输出直接作为高位计数器的时钟脉冲,异步方式的速度较慢.另一种级间采用并行进位方式,即同步方式,这种方式一般是把各计数器的CP端连在一起接统一的时钟脉冲,而低位计数器的进位输出送高位计数器的计数控制端.举例:74161(1)60进制(2)12位二进制计数器(慢速计数方式)12位二进制计数器(快速计数方式)7.4寄存器和移位寄存器寄存器是由具有存储功能的触发器组合起来构成的.一个触发器可以存储1位二进制代码,存放n位二进制代码的寄存器,需用n个触发器来构成.按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类.基本寄存器只能并行送入数据,需要时也只能并行输出.移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入,并行输出,也可以串行输入,串行输出,还可以并行输入,串行输出,串行输入,并行输出,十分灵活,用途也很广.7.4.1基本寄存器概念:在数字电路中,用来存放二进制数据或代码的电路称为寄存器.1,单拍工作方式基本寄存器无论寄存器中原来的内容是什么,只要送数控制时钟脉冲CP上升沿到来,加在并行数据输入端的数据D0~D3,就立即被送入进寄存器中,即有:2.双拍工作方式基本寄存器(1)清零.CR=0,异步清零.即有:(2)送数.CR=1时,CP上升沿送数.即有:(3)保持.在CR=1,CP上升沿以外时间,寄存器内容将保持不变.7.4.2移位寄存器1.单向移位寄存器四位右移寄存器:时钟方程:驱动方程:状态方程:右移位寄存器的状态表: 输入现态次态说明DiCP1↑1↑1↑1↑00001000110011101000110011101111连续输入4个1单向移位寄存器具有以下主要特点:单向移位寄存器中的数码,在CP脉冲操作下,可以依次右移或左移.n位单向移位寄存器可以寄存n位二进制代码.n个CP脉冲即可完成串行输入工作,此后可从Q0~Qn-1端获得并行的n位二进制数码,再用n个CP脉冲又可实现串行输出操作.若串行输入端状态为0,则n个CP脉冲后,寄存器便被清零.2.双向移位寄存器M=0时右移M=1时左移3.集成双向移位寄存器74LS194CT74LS194的引脚排列图和逻辑功能示意图:CT74LS194的功能表:工作状态0×××100×101↑110↑111×异步清零保持右移左移并行输入7.4.3移位寄存器的应用一,环形计数器1,环形计数器是将单向移位寄存器的串行输入端和串行输出端相连,构成一个闭合的环.结构特点:,即将FFn-1的输出Qn-1接到FF0的输入端D0.工作原理:根据起始状态设置的不同,在输入计数脉冲CP的作用下,环形计数器的有效状态可以循环移位一个1,也可以循环移位一个0.即当连续输入CP 脉冲时,环形计数器中各个触发器的Q端或端,将轮流地出现矩形脉冲.实现环形计数器时,必须设置适当的初态,且输出Q3Q2Q1Q0端初始状态不能完全一致(即不能全为"1"或"0"),这样电路才能实现计数,环形计数器的进制数N与移位寄存器内的触发器个数n相等,即N=n2,能自启动的4位环形计数器状态图:由74LS194构成的能自启动的4位环形计数器时序图二,扭环形计数器1,扭环形计数器是将单向移位寄存器的串行输入端和串行反相输出端相连,构成一个闭合的环.实现扭环形计数器时,不必设置初态.扭环形计数器的进制数N与移位寄存器内的触发器个数n满足N=2n的关系结构特点为:,即将FFn-1的输出接到FF0的输入端D0.状态图:2,能自启动的4位扭环形计数器7.4.4顺序脉冲发生器在数字电路中,能按一定时间,一定顺序轮流输出脉冲波形的电路称为顺序脉冲发生器.顺序脉冲发生器也称脉冲分配器或节拍脉冲发生器,一般由计数器(包括移位寄存器型计数器)和译码器组成.作为时间基准的计数脉冲由计数器的输入端送入,译码器即将计数器状态译成输出端上的顺序脉冲,使输出端上的状态按一定时间,一定顺序轮流为1,或者轮流为0.前面介绍过的环形计数器的输出就是顺序脉冲,故可不加译码电路即可直接作为顺序脉冲发生器.一,计数器型顺序脉冲发生器计数器型顺序脉冲发生器一般用按自然态序计数的二进制计数器和译码器构成.举例:用集成计数器74LS163和集成3线-8线译码器74LS138构成的8输出顺序脉冲发生器.二,移位型顺序脉冲发生器◎移位型顺序脉冲发生器由移位寄存器型计数器加译码电路构成.其中环形计数器的输出就是顺序脉冲,故可不加译码电路就可直接作为顺序脉冲发生器.◎时序图:◎由CT74LS194构成的顺序脉冲发生器见教材P233的图7.4.6和图7.4.77.5同步时序电路的设计(略)7.6数字系统一般故障的检查和排除(略)本章小结计数器是一种应用十分广泛的时序电路,除用于计数,分频外,还广泛用于数字测量,运算和控制,从小型数字仪表,到大型数字电子计算机,几乎无所不在,是任何现代数字系统中不可缺少的组成部分.计数器可利用触发器和门电路构成.但在实际工作中,主要是利用集成计数器来构成.在用集成计数器构成N进制计数器时,需要利用清零端或置数控制端,让电路跳过某些状态来获得N进制计数器.寄存器是用来存放二进制数据或代码的电路,是一种基本时序电路.任何现代数字系统都必须把需要处理的数据和代码先寄存起来,以便随时取用.寄存器分为基本寄存器和移位寄存器两大类.基本寄存器的数据只能并行输入,并行输出.移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据可以并行输入,并行输出,串行输入,串行输出,并行输入,串行输出,串行输入,并行输出.寄存器的应用很广,特别是移位寄存器,不仅可将串行数码转换成并行数码,或将并行数码转换成串行数码,还可以很方便地构成移位寄存器型计数器和顺序脉冲发生器等电路.在数控装置和数字计算机中,往往需要机器按照人们事先规定的顺序进行运算或操作,这就要求机器的控制部分不仅能正确地发出各种控制信号,而且要求这些控制信号在时间上有一定的先后顺序.通常采取的方法是,用一个顺序脉冲发生器来产生时间上有先后顺序的脉冲,以控制系统各部分协调地工作.顺序脉冲发生器分计数型和移位型两类.计数型顺序脉冲发生器状态利用率高,但由于每次CP信号到来时,可能有两个或两个以上的触发器翻转,因此会产生竞争冒险,需要采取措施消除.移位型顺序脉冲发生器没有竞争冒险问题,但状态利用率低.参考资料:第七章%20时序逻辑电路.doc。

十进制计数器码十进制加法计数器的状态表

十进制计数器码十进制加法计数器的状态表
二进制到十进制的转换通常采用权值法,从最低位开始,将每一位的二进制数乘以对应的 权值(2的幂次方),然后将各位的结果相加,即可得到对应的十进制数。
举例
将二进制数1010转换为十进制数,可以表示为1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 = 8 + 0 + 2 + 0 = 10。
十进制计数器的原理
法运算。
它具有十个不同的状态,可 以表示从0到9的十个不同的
十进制数。
在每个时钟周期内,计数器的 状态会根据输入的二进制数进 行更新,从而实现二进制数的
加法运算。
02
十进制计数器码
二进制到十进制的转换
总结词
二进制到十进制的转换是将二进制数转换为十进制数的过程,可以通过逐位乘以权值并求 和得到。
详细描述
故障排除效率。
05
总结
计数器的发展历程
手动计数器
早期计数器采用机械或手动方式,主 要用于简单的计数和计测。
电子ห้องสมุดไป่ตู้数器
随着电子技术的发展,电子计数器开 始出现,具有更高的精度和可靠性。
集成电路计数器
随着集成电路的普及,计数器被集成 到芯片中,实现了更小体积、更低功 耗和更高性能。
智能计数器
现代智能计数器结合了传感器、微处 理器和通信技术,具有自动识别、数 据处理和远程控制等功能。
计数速度 十进制加法计数器的计数速度较 快,适用于需要高速计数的应用 场景,而十进制计数器码的计数 速度较慢。
未来计数器的发展趋势
集成化
智能化
未来计数器将进一步向集成化发展,实现 更小体积、更低功耗和更高性能。
结合传感器、微处理器和通信技术,实现 自动识别、数据处理和远程控制等功能。

74ls193十进制加减减法计数器电路

74ls193十进制加减减法计数器电路

74ls193十进制加减减法计数器电路
74LS193是一种具有4位二进制计数器功能的集成电路。

它可以被用来实现十进制加减减法计数器电路。

十进制加减计数器电路有两种模式:加法模式和减法模式。

在加法模式下,电路可以实现十进制加法计数的操作;在减法模式下,电路可以实现十进制减法计数的操作。

为了实现十进制加减计数器电路,需要使用多个74LS193集成电路进行级联。

每个74LS193集成电路的四个D输入端可以连接到一个十进制数字的四个位,如个位、十位、百位和千位。

进位端(Carry)和借位端(Borrow)分别连接到后一个
74LS193的时钟端和复位端。

通过适当的控制信号输入,可以选择加法模式或减法模式。

在加法模式下,每当计数器的值达到9时,进位端会被触发,同时将下一个级联的74LS193计数器加一。

当计数器的值达到15时,所有74LS193计数器都会被复位到0,实现循环十进制加法计数。

在减法模式下,每当计数器的值达到0时,借位端会被触发,同时将下一个级联的74LS193计数器减一。

当计数器的值达到-1时,所有74LS193计数器都会被复位到9,实现循环十进制减法计数。

通过适当的控制信号输入,可以选择计数起点和计数方向。

十进制加法计数器

十进制加法计数器

燕山大学课程设计说明书题目:十进制加法计数器学院(系):电气工程学院年级专业:学号:学生姓名:指导教师教师职称:实验师实验师燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:电子实验中心学号学生姓名专业(班级)设计题目十进制加法器设计技术参数●在数码管上显示加数、被加数和结果●设置加数和被加数。

当加数和被加数超过9时显示“E”,计算结果显示为“EE”设计要求●在4个数码管显示加数、被加数和结果●分别用4个拨码开关设置加数和被加数●当加数、被加数超过9时,蜂鸣器报警5秒工作量●学会使用Max+PlusII软件和实验箱●独立完成电路设计,编程下载、连接电路和调试●参加答辩并书写任务书工作计划1.了解EDA的基本知识,学习使用软件Max+PlusII,下发任务书,开始电路设计;2.学习使用实验箱,继续电路设计;3.完成电路设计;4.编程下载、连接电路、调试和验收;5.答辩并书写任务书。

参考资料《数字电子技术基础》.阎石主编.高等教育出版社. 《EDA课程设计B指导书》.指导教师签字基层教学单位主任签字金海龙说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

2013年 3 月 11 日目录第1章前言 (4)第2章设计说明 (5)2.1 设计思路 (5)2.2 模块介绍 (5)第3章总电路原理图 (10)第4章波形仿真图及结果分析 (11)第5章补充说明 (12)5.1真值表 (12)5.2管脚锁定及硬件连线.......................................& (13)第6章心得体会 (15)参考文献 (16)第1章前言EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

1位十进制加法器vivado过程

1位十进制加法器vivado过程

1位十进制加法器vivado过程即刻走进Vivado的世界,我们将探索一种神奇而强大的数字逻辑设备——十进制加法器的设计。

首先,让我们明确一下什么是十进制加法器。

在计算机中,十进制加法器是一种用来执行十进制数字加法运算的电路。

与二进制加法器相比,十进制加法器需要处理更复杂的运算规则,因为我们在日常生活中使用十进制表示数字,而不是二进制。

在这个过程中,我们将使用Vivado,这是一种强大的集成开发环境(IDE),用于设计和开发FPGA(可编程逻辑门阵列)和ASIC(专用集成电路)等数字电子系统。

首先,我们需要创建一个新的Vivado项目。

在Vivado的主界面中,选择"Create New Project"选项,并按照指导完成项目设置。

请确保选择您所需的FPGA器件以及包含所需时钟频率和输入输出等信息。

完成项目设置后,我们需要添加一个新的设计文件。

在左侧"Flow Navigator"窗格中选择"Design Sources"选项,然后右键单击并选择"Add Sources"。

在弹出的对话框中选择"Add or create design sources"选项,并选择VHDL作为设计文件类型。

然后,选择一个适当的文件名,并点击"Finish"按钮。

接下来,我们需要为我们的设计编写VHDL代码。

VHDL是一种硬件描述语言,用于描述数字逻辑电路行为。

在我们的案例中,我们将编写用于实现十进制加法器功能的VHDL代码。

首先,让我们从创建所需的实体开始。

实体是描述一个数字逻辑电路的输入输出接口的VHDL构造。

为了创建我们的十进制加法器实体,我们需要声明输入和输出端口。

例如,我们可以声明两个4位的输入数字(A和B),以及一个5位的输出数字(Sum)。

接下来,我们需要在VHDL代码中定义内部信号和变量。

十进制加法计数器xilinx抓图

十进制加法计数器xilinx抓图

[例5.6.1] 十进制计数器的VHDL描述(sw向上是0(on);灯亮为0 )LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isPORT (cp,r:IN S TD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end count10;ARCHITECTURE Behavioral OF count10 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ;BEGINPROCESS (cp,r)BEGINif r='0' then count<="0000";elsiF cp'EVENT AND cp='1' THENif count="1001" THENcount <="0000";ELSE count <= count +1;END IF;end if;END PROCESS;q<= count;end Behavioral;[例5.6.1] 十进制计数器的VHDL描述(sw向上是1;灯亮为1)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isPORT (cp,r:IN S TD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end count10;ARCHITECTURE Behavioral OF count10 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ;BEGINPROCESS (cp,r)BEGINif r='1' then count<="0000";elsiF cp'EVENT AND cp='1' THENif count="1001" THENcount <="0000";ELSE count <= count +1;END IF;end if;END PROCESS;q<=not count;end Behavioral;(一)建立工程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[例5.6.1] 十进制计数器的VHDL描述(sw向上是0(on);灯亮为0 )LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity count10 is
PORT (cp,r:IN S TD_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="1001" THEN
count <="0000";
ELSE count <= count +1;
END IF;
end if;
END PROCESS;
q<= count;
end Behavioral;
[例5.6.1] 十进制计数器的VHDL描述(sw向上是1;灯亮为1)library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity count10 is
PORT (cp,r:IN S TD_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='1' then count<="0000";
elsiF cp'EVENT AND cp='1' THEN
if count="1001" THEN
count <="0000";
ELSE count <= count +1;
END IF;
end if;
END PROCESS;
q<=not count;
end Behavioral;
(一)建立工程。

File——〉New Project;Project Name:工程名(例:count10); Project Location:工程保存的位置(例:F:0603060x\count10);next——>……——>next直至finish。

(二)调试程序。

右击xc95108-15pc84,选New Source,再选VHDL Module后,填加文件名(例:File name:v1)——〉next( Port Name中随便填A)——〉finish
写入程序,保存程序
双击Implement Design(或右键Run),运行程序,调试成功显示如下
(三)波形仿真。

回到vi.vhd界面,右键点击v1 - Behavioral(v1.vhd),选New Source——〉Test Bench WaveForm——〉File Name:t1( 测试波形文件名t1),next(连接v1) ——next〉——〉finish
左侧Sources for 栏内选择Behavioral Simulation,选择t1 ,打开Processes下的Xilinx ISE Simulator如图
点击Simulate Behavioral Model(或右键RUN)运行仿真波形,如下(负逻辑)
(四)引脚锁定与下载
左上侧Source for选项中选择Synthesis/Implementation,左下侧Processes——〉User Constraints——〉Assign Package Pins 分配引脚:Cp-key1,r-sw1,q3-L1,q2-L2,q1-L3,q0-L4。

点击保存,OK。

回到ISE :Processes——〉Implement Design——〉Optional Implementation Tools——〉双击Lock Pins锁定引脚
Processes——〉Implement Design——〉双击Generate Programming File——〉Configure Device(iMPACT),默认JTAG,finishi,v1.jed ——〉Open
右键点绿——〉Progaram——〉OK,结束下载。

(调试时sw向上是1;灯亮为1)。

相关文档
最新文档