VHDL语言一些基本电路的设计实现

举报
Qgtdre 发表于 2019/02/01 17:05:11 2019/02/01
【摘要】 vhdl语言一些基本电路的设计实现

一.实验目的:

(1)进一步熟悉 QUARTUSII的VHDL文本设计过程。

(2)学习基本电路的设计、仿真方法。

(3)掌握VHDL语言的基本描述语句的使用方法。

二.实验内容:

(1) 二选一多路选择器;

(2) 四选一多路选择器;

(3) 3-8译码器的设计;

(4) 用if语句描述二进制(M=10)计数器。

三.源程序清单

实验2.1

--------------------------------------------------------------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

--------------------------------------------------------------------------------

ENTITY mux1 IS

  PORT(a,b:IN STD_LOGIC;

       sel:IN STD_LOGIC;

       y:OUT STD_LOGIC);

END mux1;

--------------------------------------------------------------------------------

ARCHITECTURE mux1 OF mux1 IS

BEGIN

  y<=a WHEN sel='0' ELSE

     b;

END mux1;

--------------------------------------------------------------------------------

实验2.2

--------------------------------------------------------------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

--------------------------------------------------------------------------------

ENTITY mux2 IS

  PORT(a,b,c,d:IN STD_LOGIC;

       sel:IN STD_LOGIC_VECTOR(1DOWNTO 0);

       y:OUT STD_LOGIC);

END mux2;

--------------------------------------------------------------------------------

ARCHITECTURE mux2 OF mux2 IS

BEGIN

  WITH sel SELECT

  y<=a WHEN "00" ,

     b WHEN "01" ,

     c WHEN "10" ,

     d WHEN OTHERS ;

END mux2;

--------------------------------------------------------------------------------

实验2.3

--------------------------------------------------------------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

--------------------------------------------------------------------------------

ENTITY decoder is

  PORT (x:IN STD_LOGIC_VECTOR(2 DOWNTO );

      y:OUT STD_LOGIC_VECTOR(7 DOWNTO ));

END decoder;

--------------------------------------------------------------------------------

architecture decoder of decoder is

begin

  WITH x SELECT

   y<="00000001" WHEN "000",

      "00000010" WHEN "001",

      "00000100" WHEN "010",

      "00001000" WHEN "011",

      "00010000" WHEN "100",

      "00100000" WHEN "101",

      "01000000" WHEN "110",

      "10000000" WHEN OTHERS;

END decoder;

实验2.4

------------------------------------------------------------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

--------------------------------------------------------------------------------

ENTITY counter0 is

  PORT (clk:IN STD_LOGIC;

      digit:OUT INTEGER RANGE 0 TO 10);

END counter0;

--------------------------------------------------------------------------------

architecture counter0 of counter0 is

begin

  PROCESS(clk)

  VARIABLE temp: INTEGER RANGE 0 TO 10;

  BEGIN

    IF(clk'EVENT AND clk='1') THEN

      temp:=temp+1;

      IF(temp>=10) THEN

       temp:=0;

      END IF;

    END IF;

    digit<=temp;

   END PROCESS ;

END counter0;

四.调试及运行结果分析

1.运行结果


无标题1.jpg

分析:由图可知,sel=0时,y=a;sel=1时,y=b,实现了二选一数据选择器功能,说明代码正确。

 

2.运行结果

无标题2.jpg

分析

由图可知,当sel=00,01,10,11时,输出y分别等于a,b,c,d。说明实现了四选一数据选择器的功能,说明代码正确。

3.运行结果

无标题3.jpg

分析

由图可知,当输入x分别是000,001,010,011,100,101,110,111时,对应输出为y(0),y(1),y(2),y(3),y(4),y(5),y(6),y(7)依次为低电平,说明实现了3-8译码器的功能。说明代码正确。

4.运行结果

无标题4.jpg

分析

由图可知,但第1个clk上升沿到来时,digit计数1,第2个clk上升沿到来,digit计数2,直到第9个clk上升沿到来,digit计数9,第10个clk上升沿到来,digit清0。说明实现了模十计数功能,说明代码正确。

五.实验体会

通过实验:

(1)进一步熟悉 QUARTUSII的VHDL文本设计过程。

(2)学习基本电路的设计、仿真方法。

(3)掌握VHDL语言的基本描述语句的使用方法。

(4)学习了数据选择器,译码器,计数器的编程方法


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。