VHDL几个复杂电路的实现
一.实验目的:
1 掌握复杂组合部件的设计方法。
2 掌握复杂时序部件的设计方法。
二.实验内容:
1.奇偶校验发生器(奇校验);
2.子程序设计
定义函数或过程maxval,可以求出标准位矢量类型a、b的最大值。主程序中通过调用此函数或过程,可以实现对多个数求最大值。
3.设计实现秒表功能:要求有分秒百分表的显示。
一.源程序清单
实验4.1
entity parity_gen is
generic ( n :integer :=7);
port (input : in bit_vector (n-1 downto 0);
output : out bit_vector (n downto 0));
end parity_gen;
architecture parity of parity_gen is
begin
process (input)
variable temp1 : bit;
variable temp2 : bit_vector (output ' range);
begin
temp1 :='1';
for i in input ' range loop
temp1 := temp1 xor input(i);
temp2(i) := input (i);
end loop;
temp2(output'high) :=temp1;
output <= temp2;
end process;
end parity;
实验4.2
-----------------11.最大值-------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
-----------------------------------------------------------------------------
entity max0 is
port (inp1, inp2 , inp3 : in std_logic_vector (7 downto 0);
maxout: out std_logic_vector (7 downto 0));
end max0;
-----------------------------------------------------------------------------
architecture max0 of max0 is
signal temp : std_logic_vector (7 downto 0);
-----------------------------------------------------------------------------
procedure max1 ( signal in1, in2 : in std_logic_vector (7 downto 0);
signal max : out std_logic_vector (7 downto 0)) is
begin
if (in1 > in2) then
max <= in1;
else
max <= in2;
end if;
end max1;
-----------------------------------------------------------------------------
begin
u1: max1 (inp1, inp2, temp);
u2: max1 (temp, inp3, maxout);
end max0;
实验4.3
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY second IS
PORT (clk: IN STD_LOGIC;
y1,y2,y3:out integer RANGE 0 TO 3600 );
END second;
architecture counter OF second IS
BEGIN
PROCESS(clk)
variable sec: integer RANGE 0 TO 60;
variable min: integer RANGE 0 TO 60;
variable hour:integer RANGE 0 TO 60;
BEGIN
IF (clk'event AND clk='1')then
sec:=sec+1;
IF(sec=60)THEN
min:=min+1;
END IF;
IF(min=60)THEN
hour:=hour+1;
END IF;
END IF;
y1<=sec;
y2<=min;
y3<=hour;
END PROCESS;
END counter;
二.调试及运行结果分析
实验4.1
运行结果
分析:当输入为偶数个1时,输出高位置1,输入有奇数个1,输出高位置0.实现奇偶校验发生器(奇校验)的功能。说明代码正确。
实验4.2
运行结果
分析:由图可知,输入三个数a,b,c输出为其中的最大值,实现了对多个数求最大值的功能,说明代码正确。
实验4.3
运行结果
分析:由图可知,当clk输入60个,秒输出计数1,当秒输出计满60,分输出计数1,因为时间太长,没有在图上仿真出分的进位。说明实现了分秒百分表的显示功能,说明代码正确。
五.总结
通过实验:
1.掌握了复杂组合部件的设计方法,学习了奇偶校验发生器(奇校验)的设计。
2 掌握复杂时序部件的设计方法。学习了如何用函数比较多个数,求出最大值。
3.学习了计数器实现秒表的设计方法。
- 点赞
- 收藏
- 关注作者
评论(0)