资源描述
可编程器件的VHDL文本方式设计实验
一、实验目的
1、学习使用ABEL-HDL语言中的真值表法、逻辑等式法、状态图法设计简单时序电路。
2、用TSP1032设计“十进制计数器-七段译码器”一体化电路。
3、学习使用ispEXPERT软件。
4、学习ISP器件的编程和下载。
二、实验所用的仪器和芯片
1、ISP1032 1片
2、TEC-5(TDS-2)实验系统 1台
3、万用表或逻辑表 1个
4、示波器 1台
三、实验内容
1、用ABEL语言中的真值表法、逻辑等式法、状态图法三种方法设计一个十进制计数器。该计数器的时钟输入为CLK,在CLK的上升沿计数。它具有同步复位输入端CLR,当CLR为低电平时,在下一个时钟的上升沿,将计数器清零。技术顺序如表所示:
2、在ispEXPERT环境下,输入三种设计方案,并进行编译、连接、器件适配和下载。
3、在TDS-2实验台上,使用单脉冲做计数时钟脉冲,复位信号接电平开关。计数器的输出Q3Q2Q1Q0接LED指示灯,检查设计的正确性。
4、用ISP1032设计“十进制计数器-七段译码器”一体化电路,将七段译码器输出连接到实验台最后一个数字管进行显示。
四、实验设计框图:
五、实验源代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity m10 is
Port ( clk : in std_logic;
load : in std_logic;
din : in std_logic_vector(3 downto 0);
qout : out std_logic_vector(3 downto 0);
y : out std_logic_vector(6 downto 0);
c : out std_logic;
clear: std_logic);
end m10;
architecture func of m10 is
signal temp : std_logic_vector(3 downto 0);
begin
process (clk, load, din)
begin
if (clear ='0') then
temp<="0000";
elsif (load= '0' ) then
temp <= din;
elsif (clk'event and clk= '1') then
if (temp = "1001") then
temp <= "0000";
else
temp <= temp+1;
end if;
end if;
end process;
qout <= temp;
c <= '1' when temp="1001" else '0';
y <= "1111110" when temp="0000" else --0
"0000110" when temp="0001" else --1
"1101101" when temp="0010" else --2
"1111001" when temp="0011" else --3
"0110011" when temp="0100" else --4
"1011011" when temp="0101" else --5
"0011111" when temp="0110" else --6
"1110000" when temp="0111" else --7
"1111111" when temp="1000" else --8
"1111011" when temp="1001" else --9
"0000000" ;
end func;
六、实验软件界面图:
七、实验接线图:
八、实验心得体会:
本次实验在进行的过程中总体比较顺利,包括在ispEXPERT环境下,输入三种设计方案,并进行编译、连接、器件适配和下载,下载的时候出了一点小问题,经过同学的帮助完成下载。在将七段译码器输出连接到实验台数字管进行显示的过程中,由于一根导线的连接问题,导致数字有一条边一直无法输出亮的信号,后来经过检查排除问题。
展开阅读全文