VHDL语言实例_第1页
VHDL语言实例_第2页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.VHDL语言实例例1:设计一七段显示译码器,用它来驱动七段发光管LED显示十六进制数字0到9和字母A到F。LED显示数码管为共阳极。LIBRARY ieee;                                 USE ieee.std_logic_1164.all; 

2、60;   ENTITY HEX2LED IS                               PORT(              &#

3、160;                              HEX :IN std_logic_vector(3 DOWNTO 0);        LED : OUT std_logic_vector(6 TO 0)  

4、          );                                  END HEX2LED;       

5、                         图例1 七段显示译码器实体 ARCHITECTURE HEX2LED_arc OF HEX2LED IS      BEGIN           &

6、#160;                           - HEX-TO-SEVEN-SEGMENT DECODER              - SEGMENT ENCODING  

7、;                       - 0                           &

8、#160;            - -                                     

9、60; - 5 | |1                                   - - <-6             

10、              - 4 | |2                                   

11、60;- -                                  - 3                &

12、#160;                      WITH HEX SELECT   LED<= "1111001" when "0001",               

13、0;      "0100100" when "0010",                     "0110000" when "0011",          &#

14、160;           "0011001" when "0100",                     "0010010" when "0101",      

15、;               "0000010" when "0110",                     "1111000" when "0111",    

16、                 "0000000" when "1000",                      "0010000" when "100

17、1",                    "0001000" when "1010",                     "0000011&

18、quot; when "1011",                      "1000110" when "1100",                 &

19、#160; "0100001" when "1101",                     "0000110" when "1110",               

20、;     "0001110" when "1111",                     "1000000" when others;    END HEX2LED_arc;例2:设计一个八选一数据选择器1)s是通道选择信号,   d0,d1

21、,d2,d3,d4,d5,d6,d7数据输入    out1是数据输出ENTITY sels IS PORT(d0,d1,d2,d3,d4,d5,d6,d7:IN BIT;          s :INTEGER RANGE 0 TO 7;          out1 :OUT BIT);END sels;图例2(a)    八选一数据选择器实体ARCHITECTURE sel

22、s_arc OF sels ISBEGIN       WITH s SELECT              out1 <= d0 WHEN 0,              d1 WHEN 1,      

23、0;       d2 WHEN 2,              d3 WHEN 3,        d4 WHEN 4,               d5 WHEN 5,   &

24、#160;          d6 WHEN 6,              d7 WHEN 7;END sels_arc;2)A,B,C是通道选择信号,    I0,I1,I2,I3,I4,I5,I6,I7数据输入  Q是数据输出LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mux8 ISPOR

25、T(I0,I1,I2,I3,I4,I5,I6,I7,A,B,C:IN std_logic;          Q :OUT std_logic);END mux8; 图例2(b)    八选一数据选择器实体ARCHITECTURE mux8_arc OF mux8 IS    SIGNAL sel :INTEGER ;BEGIN    Q <= I0 AFTER 10 ns WHEN sel= 0 ELSE &

26、#160;            I1 AFTER 10 ns WHEN sel= 1 ELSE              I2 AFTER 10 ns WHEN sel= 2 ELSE              I3 AFTER

27、 10 ns WHEN sel= 3 ELSE              I4 AFTER 10 ns WHEN sel= 4 ELSE              I5 AFTER 10 ns WHEN sel= 5 ELSE         

28、60;    I6 AFTER 10 ns WHEN sel= 6 ELSE              I7 AFTER 10 ns ;   sel <= 0 WHEN A= 0 AND B= 0 AND C= 0 ELSE                

29、; 1 WHEN A= 1 AND B= 0 AND C= 0 ELSE                 2 WHEN A= 0 AND B= 1 AND C= 0 ELSE                 3 WHEN A= 1 AND B= 1 AND C= 0 ELSE&#

30、160;                4 WHEN A= 0 AND B= 0 AND C= 1 ELSE                 5 WHEN A= 1 AND B= 0 AND C= 1 ELSE      

31、0;          6 WHEN A= 0 AND B= 0 AND C= 1 ELSE                 7;END mux8_arc;例3:设计一D触发器d是输入端,clk是时钟信号控制端,q是触发器的输出端。其程序如下:LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY reg

32、IS   PORT(d,clk:IN BIT;        q:OUT BIT);END reg;图例3 D触发器实体ARCHITECTURE reg_arc OF reg IS  BEGIN    PROCESS      BEGIN        WAIT UNTIL clk= 1;     

33、   q <= d;    END PROCESS;  PROCESSEND reg_arc;例4:设计一基本RS触发器r、s为触发器的输入信号,q、not_q为触发器的输出信号。LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY RSFF IS   PORT(r,s:IN BIT;        q,not_q:OUT BIT);END RSFF;图例4 基本RS触发器实体ARCHITECTU

34、RE RSFF_arc OF RSFF IS  BEGIN    PROCESS(r,s)      VARIABLE last_state:BIT:= 0;      BEGIN        ASSERT NOT(r= 1 AND s= 1)        REPORT “Both r AND s equal to

35、 1”        SEVERITY error;        IF r= 0 AND s= 0 THEN           last_state:= last_state ;        ELSIF r= 1 AND s= 0 THEN   

36、0;       last_state:= 0;        ELSE - r= 0 AND s= 1           last_state:= 1;        END IF;    q <= last_state AFTER 10 ns; &

37、#160;  not_q <= NOT(last_state) AFTER 20 ns;  END PROCESS;END RSFF_arc;当r和s同时等于1时,触发器处于不定状态。程序设计中设置了断言语句是为了判断r和s都等于1时,输出终端将显示报告“Both r AND s equal to 1”,同时终止模拟过程,并显示错误的严重error,以便设计者调试和修正模块程序。从IF到END IF是条件语句,用到了可选项ELSIF和ELSE来判别RS触发器的其它三种情况。IF语句后面是一赋值语句,将IF语句中赋值的中间变量lsat_state经10 ns后送到q端。

38、图8-12是RS触发器的逻辑电路图。例5:设计一个带有异步清零、同步置数、使能控制的四位二进制计数器LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY COUNT2 IS   PORT(A: IN INTEGER RANGE 0 TO 3;        CLK: IN STD_LOGIC;        CLR: IN STD_LOGIC;    &#

39、160;   EN: IN STD_LOGIC;        LD: IN STD_LOGIC;        Cout: OUT INTEGER RANGE 0 TO 3        );END COUNT2;图例5   四位二进制计数器实体ARCHITECTURE COUNT2_arc OF COUNT2 IS  SIGNAL 

40、SIG: INTEGER RANGE 0 TO 3;BEGIN  PROCESS (CLK, CLR)  BEGIN    IF CLR = '0' THEN       SIG <= 0;    ELSIF (CLK'EVENT AND CLK = '1') THEN      IF LD = '1' THEN   

41、;      SIG <= A;      ELSE        IF EN = '1' THEN           SIG <= SIG + 1;        ELSE    

42、0;      SIG <= SIG;        END IF;     END IF;   END IF;  END PROCESS;   Cout <= SIG;END COUNT2_arc例6:设计一个存储容量为28×8的RAM。CS为RAM的片选信号,WR为RAM的写信号,RD为RAM读信号,ADR:八位地址信号,Din:八位数据输入线,Dout为八位数

43、据输出线。library IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity RAM is    port (WR: in STD_LOGIC;                 RD: in STD_LOGIC;          

44、60;      ADR: in STD_LOGIC_VECTOR (7 downto 0);                 CS: in STD_LOGIC;                 Din: in STD_LOGIC_VECTOR (7

45、 downto 0);                 Dout: out STD_LOGIC_VECTOR (7 downto 0)               );end RAM;图例6   RAM实体architecture RAM_arch of RAM is   sub

46、type word is std_logic_vector(7 downto 0);   type memory is array (0 to 15)of word;   signal adr_in:integer range 0 to 15;   signal sram:memory;  begin       adr_in<=conv_integer(ADR);      process(wr)begin&

47、#160;        if(wr'event and wr='1')then           if(cs='1'and wr='1')then              sram(adr_in)<=din after 2 ns;&

48、#160;          end if;         end if;      end process;      process(rd,cs)begin         if(rd='0'and cs='1'

49、)then           dout<=sram(adr_in)after 3 ns;         else           dout<="ZZZZZZZZ"after 4 ns;        

50、 end if;      end process;end RAM_arch;例7:利用枚举类型设计一个状态机,用灯的颜色代表相应的状态名。library IEEE;use IEEE.std_logic_1164.all;ENTITY traffic_light IS    PORT ( sensor,clock :in std_logic;          red_light,green_light,yellow_ligh

51、t:out std_logic          );end traffic_light;architecture abc of traffic_light is     type t_state is (red,green,yellow);     signal present_state,next_state:t_state;begin  process(present_state,sensor)  b

52、egin    case present_state is    when green=>        next_state<=yellow;        red_light<='0'        green_light<='1'   &

53、#160;    yellow_light<='0'    when red=>        red_light<='1'        green_light<='0'        yellow_light<='0' &

54、#160;      if(sensor='1')then          next_state<=green;        else          next_state<=red;       

55、; end if;    when yellow=>          red_light<='0'          green_light<='0'          yellow_light<='1'   

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论