实验一 可编程ASIC使用初步
一、 实验目的:
1、 过本次实验掌握EDA实验箱的使用方法。
2、 将给出的数据选择器、数据比较器等程序下载到实验箱中进一步
了解实验箱中按键、发光管、数码管的具体使用方法。
3、 掌握常用组合逻辑电路的VHDL语言设计方法。
二、 实验要求:
1、 参考实验箱附录的说明书结合老师讲述,体会实验箱的用法。
2、 利用VHDL语言输入方法设计(参考四路二选一数据选择器程序),编
译、定义引脚并下载到实验箱中验证。
3、 利用VHDL语言输入方法设计(数据比较器);利用D1-D3作为比较
结果输出,两个按键的值作为输入数据。编译、定义引脚并下载到实验
箱中验证。
4、 利用VHDL语言输入方法设计(七段码译码器),用按键做为输入,经
译码输出到数码管进行显示。
三、实验步骤:
1、 用VHDL描述语言设计四路二选一数据选择器,选择器件,定义引脚、
设置下载口,下载到器件中、通过实验箱验证。(参考程序见附录)此项实验
选用模式1实现,用按键1做为IN1的输入数据、按键2做为IN2的输
入数据,按键7做为数据选择控制端,数码管5做为输出显示。
2、 用VHDL描述语言设计数据比较器,选择器件,定义引脚、设置下载
口,下载到器件中、通过实验箱验证。(参考程序见附录)此项实验选用模式
1实现,用按键1做为A的输入数据、按键2做为B的输入数据,发光D1
做为大于显示、D2做为等于显示、D3做为小于显示。
3、 用VHDL描述语言设计七段码译码器,选择器件,定义引脚、设置下
载口,下载到器件中、通过实验箱验证。(参考程序见附录)此项实验选用
模式6实现,用按键1做为的输入数据、数码管5做为输出显示。
四、思考题:
在第三项中参考相应的模式,更改输入或输出的端口, 观察效果。
多路数据选择器参考程序:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY sjxz1 IS
PORT ( c: IN std_logic;
in1,in2: in std_logic_VECTOR(3 DOWNTO 0);
out1: out STD_LOGIC_VECTOR(3 DOWNTO 0));
END sjxz1;
ARCHITECTURE one OF sjxz1 IS
BEGIN
out1<=in1 WHEN C='1' ELSE
in2 WHEN C='0';
END one;
数据比较器参考程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY a3 IS
PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
W,D,T:OUT STD_LOGIC
);
END a3;
ARCHITECTURE A OF a3 IS
SIGNAL Q1,Q2:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(Q1,Q2)
BEGIN
IF A>B THEN W<='1';D<='0';T<='0';
ELSIF A=B THEN W<='0';D<='1';T<='0';
ELSE W<='0';D<='0'; T<='1';
END IF;
END PROCESS;
END A;
七段码译码器参考程序:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY ymq IS
PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;
END ymq;
ARCHITECTURE one OF ymq IS
BEGIN PROCESS( A )
BEGIN
CASE A(3 DOWNTO 0) IS
WHEN "0000" => LED7S <= "0111111" ;
WHEN "0001" => LED7S <= "0000110" ;
WHEN "0010" => LED7S <= "1011011" ;
WHEN "0011" => LED7S <= "1001111" ;
WHEN "0100" => LED7S <= "1100110" ;
WHEN "0101" => LED7S <= "1101101" ;
WHEN "0110" => LED7S <= "1111101" ;
WHEN "0111" => LED7S <= "0000111" ;
WHEN "1000" => LED7S <= "1111111" ; -
WHEN "1001" => LED7S <= "1101111" ;
WHEN "1010" => LED7S <= "1110111" ;
WHEN "1011" => LED7S <= "1111100" ;
WHEN "1100" => LED7S <= "0111001" ;
WHEN "1101" => LED7S <= "1011110" ;
WHEN "1110" => LED7S <= "1111001" ;
WHEN "1111" => LED7S <= "1110001" ;
WHEN OTHERS => NULL ;
END CASE ;
END PROCESS ;
END one;