实验一计数器设计一、实验目的计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。
二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.其他器材与材料若干三、实验说明计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。
下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。
四、实验要求1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证计数器功能。
4.为上述设计建立元件符号。
5.在上述基础上设计计数器。
五、实验结果十进制计数器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(en,reset,clk:in std_logic;q:buffer std_logic_vector(3 downto 0);co:out std_logic);end counter10;architecture behav of counter10 isbeginprocess(clk,en)beginif clk'event and clk='1' thenif reset='1' then q<="0000";elsif en='1' thenif q<"1001" then q<=q+'1';else q<="0000";end if;end if;end if;end process;co<='1' when q="1001" else '0';end behav;仿真波形图:实验二七段数码显示译码器设计一、实验目的:学习7段数码显示译码器设计,学习VHDL组合电路的多层次设计方法。
二、实验原理:七段数码管由8个(a,b,c,d,e,f,g,dp)按照一定位置排列的发光二极管构成,通常采取共阴极或者共阳极的设计,将8个二极管的同一极接在一起,通过分别控制另外的8个电极的电平,使二极管导通(发光)或截止(不发光)。
七段数码显示译码器的功能就是根据需要显示的字符,输出能够控制七段数码管显示出该字符的编码。
三、实验内容:1、用VHDL设计7段数码管显示译码电路,并在VHDL描述的测试平台下对译码器进行功能仿真,给出仿真的波形。
1、数码管显示电路设计利用以上设计的译码器模块,设计一个可以在8个数码管上同时显示字符的电路。
快速轮流点亮8个数码管,这样就可以实现同时显示8个字符的效果。
要实现以上功能,就必须按照一定时钟节拍,轮流使译码器输出所需要字符的编码;同时控制数码管的公共电极电平,轮流点亮数码管。
2、用QuartusII对2中的设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。
3、QuartusII集成环境,将设计下载到实验电路上进行硬件测试。
管脚锁定: clk: 28A(3): 30 SW1A(2): 35 SW2A(1): 36 SW3A(0): 37 SW4LED7S(6): 163 SEG gLED7S(5): 166 SEG fLED7S(4): 165 SEG eLED7S(3): 168 SEG dLED7S(2): 167 SEG cLED7S(1): 170 SEG bLED7S(0): 169 SEG a实验结果:数码管显示电路的原理框图:VHDL描述:7段数码管显示译码电路VHDL描述:library ieee;use ieee.std_logic_1164.all;entity decl7s isport(a:in std_logic_vector(3 downto 0);led7s:out std_logic_vector(6 downto 0)); end;architecture one of decl7s isbeginprocess(a)begincase a iswhen"0000"=>led7s<="0111111";when"0001"=>led7s<="0000110";when"0010"=>led7s<="1011011";when"0011"=>led7s<="1001111";when"0100"=>led7s<="1100110";when"0101"=>led7s<="1101101";when"0110"=>led7s<="1111101";when"0111"=>led7s<="0000111";when"1000"=>led7s<="1111111";when"1001"=>led7s<="1101111";when"1010"=>led7s<="1110111";when"1011"=>led7s<="1111100";when"1100"=>led7s<="0111001";when"1101"=>led7s<="1011110";实验三数控分频器的设计一、实验目的:学习数控分频器的设计和测试方法。
二、实验原理:数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。
该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。
用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。
电路输出波形图:三、实验内容:1)根据实验原理画出电路框图,并计算在不同预置数时输出信号的频率与时钟频率的比值。
2)编写实现数控分频器的VHDL程序。
要求输出信号的占空比尽量为50%。
提示:可以将计数器溢出信号输出给一个翻转触发器,溢出信号的边沿作为触发器的触发信号,触发器的输出就是分频器的输出(注意计数器初始计数值与输出频率之间的关系)。
3)用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。
输入不同的clk信号和不同的输入控制信号,测试输出波形。
数控分频器的VHDL描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;D:STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)V ARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8="11111111" THENCNT8:=D;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)V ARIABLE CNT2:STD_LOGIC; BEGINIF FULL'EVENT AND FULL='1' THEN CNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END;仿真波形:《EDA 上机实验报告》小组成员:完成日期:2011年11月16日。