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.运行结果
分析:由图可知,sel=0时,y=a;sel=1时,y=b,实现了二选一数据选择器功能,说明代码正确。
2.运行结果
分析
由图可知,当sel=00,01,10,11时,输出y分别等于a,b,c,d。说明实现了四选一数据选择器的功能,说明代码正确。
3.运行结果
分析
由图可知,当输入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.运行结果
分析
由图可知,但第1个clk上升沿到来时,digit计数1,第2个clk上升沿到来,digit计数2,直到第9个clk上升沿到来,digit计数9,第10个clk上升沿到来,digit清0。说明实现了模十计数功能,说明代码正确。
五.实验体会
通过实验:
(1)进一步熟悉 QUARTUSII的VHDL文本设计过程。
(2)学习基本电路的设计、仿真方法。
(3)掌握VHDL语言的基本描述语句的使用方法。
(4)学习了数据选择器,译码器,计数器的编程方法
- 点赞
- 收藏
- 关注作者
评论(0)