当前位置:文档之家› 硬件描述语言

硬件描述语言


sin
sout
tmp <= not tmp; clock tmp
reset
end ifOCESS;
异步复位
PROCESS (clock, reset)
BEGIN
if reset = ‘1’ then
sout <= ‘0’;
tmp <= ‘0’;
elsif clock =‘1’ AND clock’EVENT then
PROCESS (clr,clk)
调整周期
BEGIN
IF(clr=1) THEN
Count_B<=“00000000”;
q <= ‘0’;
ELSIF (clk'EVENT AND clk = ‘1’ ) THEN
IF (Count_B = “00001111”) THEN
Count_B<=“00000000”;
Count_B<=“00000000”;
ELSIF (clk’EVENT AND clk = ‘1’ ) THEN
IF (updn=‘1’) THEN
Count_B<=count_B + 1;
ELSE
Count_B<=count_B – 1;
END IF;
END IF;
END PROCESS;
END example;
晶振频率。
分频器
signal count : std_logic_vector(7 DOWNTO 0);
process ( fosc,rst)
begin
if rst = ‘1’ then
END count;
ARCHITECTURE example OF count IS
SIGNAL count_B:STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
Q <= count_B; PROCESS (clr,clk)
BEGIN
IF(clr=‘1’) THEN
q <= ‘1’;
ELSIF (Count_B = “00000001”) THEN
q <= ‘0’;
ELSIF (Count_B = “00000011”) THEN
q <= ‘1’;
ELSIF (Count_B = “00000100”) THEN
q <= ‘0’;
END IF;
END IF;
END PROCESS;
else
Count_B<=count_B + 1;
IF (Count_B = “00000000”) THEN
q <= ‘1’;
ELSIF (Count_B = “00000001”) THEN
q <= ‘0’;
ELSIF (Count_B = “00000011”) THEN
q <= ‘1’;
ELSIF (Count_B = “00000100”) THEN
updn
CLR
Q
CLK
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY count IS
PORT (clk,clr,updn: IN STD_LOGIC;
Q: OUT STD_LOGIC_VECTOR(7 downto 0));
q <= ‘0’;
END IF;
END IF;
END IF;
END PROCESS;
用计数值控制产生精确时序
只要知道晶振频率f,即可知道周期T=1/f; 使用一个计数器,可以通过计数值n,精确知道当计数值
为n时消耗的时间t=nT; 上例中以n为控制条件,可以控制其它信号在某时刻变高,
某时刻变低,从而产生精确时序; 但要注意:时间分辨率(或叫最小控制时间间隔)取决于
第9讲:不同风格的状态机设计
1 上节内容回顾 2 计数值与状态的关系 3 递变型状态变更控制 4 状态机使用 5 两种不同类型的状态机
1 上节内容回顾
时序逻辑 复位的概念与功用、同步复位和异步复位 计数器设计、利用计数值控制状态变更
时序逻辑电路又称为同步电路,基础电路包括触发器、寄 存器、计数器。
08/09学年第1学期
硬件描述语言及器件
主讲教师:刘文怡
教材:任勇峰等编著《VHDL与硬件实现速成》
教学安排
第1讲:VHDL概述及其开发环境 第2讲:VHDL的基本元素 第3讲:VHDL的进程 第4讲:其它并行语句 第5讲:VHDL实例剖析 第6讲:VHDL的顺序描述语句 第7讲:结构体的描述风格 第8讲:计数器状态控制 第9讲:不同风格的状态机设计 第10讲:VHDL综合举例
sout <= sin; tmp <= not tmp; end if; END PROCESS;
sin
sout
clock tmp reset
可逆计数器
可逆计数器根据计数脉冲的不同,控制计数器在同步信号 脉冲的作用,进行加1操作,或者减1操作。
CLR=‘1’时,计数器清零; 可逆计数器的计数方向,由特殊的控制端updn控制。 当updn = ‘1’时,计数器加1操作; 当updn = ‘0’时,计数器减1操作;
用计数器值做条件来控制时序
PROCESS (clr,clk)
BEGIN
IF(clr=1) THEN
Count_B<=“00000000”;
q <= ‘0’;
ELSIF (clk'EVENT AND clk = ‘1’ ) THEN
Count_B<=count_B + 1;
IF (Count_B = “00000000”) THEN
由数字电路知道,任何时序电路都以时钟为驱动信号,时 序电路只是在时钟信号的边沿到来时,其状态才发生改变。 因此,时钟信号是时序电路程序的执行条件,时钟信号是 时序电路的同步信号。
什么是时钟?其作用是什么?
复位,设定初始状态
时序电路的初始状态应由复位信号来设置。根据复位信号 对时序电路复位的操作不同,使其可以分为同步复位和异 步复位。
所谓异步复位,就是当复位信号有效时,时序电路立即复 位,与时钟信号无关。
同步复位
PROCESS (clock)
BEGIN
if clock =‘1’ and clock’EVENT then
if reset = ‘1’ then
sout <= ‘0’;
tmp <= ‘0’;
else
sout <= sin;
相关主题