第七讲 VHD的混合输入法.pptVIP

  • 4
  • 0
  • 约3.94千字
  • 约 14页
  • 2018-11-19 发布于江苏
  • 举报
第七讲 VHD的混合输入法

第七讲 VHDL硬件描述语言_5 教学课时:2学时 教学内容:原理图和VHDL混合输入法设计 (1)同步计数器的设计 (2)7段显示译码器的设计 (3)顶层实体的设计 1、原理图与VHDL混合输入法设计 以具体实例进行讲解。 要求: (1)先设计一个1位十进制数的计数显示译码电路。其中,计数器、七段显示译码电路由VHDL程序描述。 (2)在原理图中调用2个1位十进制数计数器,2个七段显示译码电路来实现2位十进制的计数显示,以完成整个电路的设计,并用Quartus II进行功能仿真。 一、同步计数器的设计。 所谓同步计数器,就是在时钟脉冲的控制下,构成计数器的各触发器状态同时发生变化的那一类计数器。 异步复位:是指复位信号一有效,计数器的计数值清0,进位输出清0. 同步复位:是指复位信号有效,且时钟脉冲正是上升沿(或下降沿)时,计数器的计数值和进位输出清0. 思考题 设计4位右移移位寄存器。要求用VHDL文本输入设计1位D触发器,再用原理图方式设计4位右移移位寄存器,并仿真验证。 * * 例1:设计一个具有异步复位的1位十进制计数器,VHDL程序为counter_1.vhd,并使用Quartus II进行仿真。 设计思路: (1)确定端口引脚: clk:时钟信号 rst:复位信号 q:计数值 cout:计数满 (2)工作流程: rst=1?若是,将q,cout清零,若否,则判断是否clk上升沿,若是,则计数。计数时判断是否计到9,若是,则q清零,cout置1;若否,则计数值加1,cout清零. library ieee; use ieee.std_logic_1164.all; entity counter_1 is port(clk,rst:in std_logic; q:out integer range 0 to 9; cout:out std_logic); end entity; architecture one of counter_1 is begin process(clk,rst) variable y:integer range 0 to 9; begin if rst=1 then y:=0; cout=0; elsif clkevent and clk=1 then if y=9 then y:=0; cout=1; else y:=y+1; cout=‘0’; end if; end if; q=y; end process; end one; 异步复位的1位十进制计数器的仿真时序图 二、七段显示译码器的设计 七段显示译码器是将1位十进制数码译成数码管对应的a-g七段显示信号。它有两种连接方式,共阴极和共阳极连接。 设采用共阴极连接,则‘1’使对应的二极管亮,‘0’使对应的二极管灭。 例2:设计七段显示译码器的VHDL程序。 07H 7 7FH 8 6FH 7DH 6DH 66H 4FH 5BH 06H 3FH 9 6 5 4 3 2 1 0 七段码表: 七段显示译码器的设计思路: (1)确定端口引脚 d:输入的1位十进制数 y:输出的七段码值 (2)程序编写,可考虑用case 语句对输出y赋值。 library ieee; use ieee.std_logic_1164.all; entity sec7 is port(d:in integer range 0 to 15; y:out std_logic_vector(6 downto 0)); end entity; architecture one of sec7 is begin process(d) begin case d is when 0 =y=0111111; when 1 =y=0000110; when 2 =y=1011011; when 3 =y=1001111; when 4 =y=1100110; when 5 =y=1101101; when 6 =y=1111101; when 7 =y=0000111; when 8 =y=1111111; when 9 =y=1101111; when others =y=ZZZZZZZ; end case; end process; end one; 7段数码显示的仿真时序图 例3:用原理图,VHDL混合方式设计2位十进制数的计数显示译码电路。 第一步:生成1位十进制计数器电路的元件。方法是点菜单File-Create/Update-careate symbol fil

文档评论(0)

1亿VIP精品文档

相关文档