西北工业大学部分数电实验VHDL程序合集

  • 格式:docx
  • 大小:16.69 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3位二进制数比较器4选1数据选择器8421码转换为格雷码8421码转换为余三码

数码管译码器带异步复位的四位二进制减计数器带异步复位的8421码十进制计数器

分频器带异步复位的四位环形计数器数码管显示012345数码管滚动显示012345

数码管滚动显示012345,且用全灭的数码管填充右边,直至全灭彩灯控制电路

(1)3位二进制数比较器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY comp3 IS

PORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0); B:IN STD_LOGIC_VECTOR(2 DOWNTO 0); YA,YB,YC:OUT STD_LOGIC); END comp3;

ARCHITECTURE behave OF comp3 IS BEGIN

PROCESS(A,B) BEGIN

IF(A>B)THEN

YA<='1';YB<='0';YC<='0'; ELSIF(A

YA<='0';YB<='1';YC<='0'; ELSE

YA<='0';YB<='0';YC<='1'; END IF;

END PROCESS; END behave;

(2)4选1数据选择器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux4 IS

PORT(A:IN STD_LOGIC_VECTOR(1 DOWNTO 0); D0,D1,D2,D3:IN STD_LOGIC; Y,YB:OUT STD_LOGIC); END mux4;

ARCHITECTURE behave OF mux4 IS BEGIN

PROCESS(A,D0,D1,D2,D3) BEGIN

CASE A IS

WHEN"00"=> Y<=D0;YB <= NOT D0; WHEN"01"=> Y<=D1;YB <= NOT D1; WHEN"10"=> Y<=D2;YB <= NOT D2; WHEN"11"=> Y<=D3;YB <= NOT D3; WHEN OTHERS=> Y<='Z';YB<='Z'; END CASE; END PROCESS; END behave;

(3)8421码转换为格雷码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY trans1 IS

PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END trans1;

ARCHITECTURE trans_gray OF trans1 IS BEGIN

B(0)<=A(0)XOR A(1); B(1)<=A(1)XOR A(2); B(2)<=A(2)XOR A(3); B(3)<=A(3); END trans_gray;

(4)8421码转换为余三码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY sunyu_trans2 IS

PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END sunyu_trans2;

ARCHITECTURE trans_ex3 OF sunyu_trans2 IS BEGIN

PROCESS(A) BEGIN CASE A IS

WHEN"0000"=> B<="0011"; WHEN"0001"=> B<="0100"; WHEN"0010"=> B<="0101"; WHEN"0011"=> B<="0110"; WHEN"0100"=> B<="0111"; WHEN"0101"=> B<="1000"; WHEN"0110"=> B<="1001"; WHEN"0111"=> B<="1010"; WHEN"1000"=> B<="1011"; WHEN"1001"=> B<="1100"; WHEN OTHERS=> B<="ZZZZ"; END CASE; END PROCESS; END trans_ex3;

(5)数码管译码器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sunyu_encoder IS

PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END sunyu_encoder;

ARCHITECTURE encoder_arch OF sunyu_encoder IS BEGIN

PROCESS(A) BEGIN

C<="011111"; CASE A IS

WHEN"0000"=> B<="1111110";--0 WHEN"0001"=> B<="0110000";--1 WHEN"0010"=> B<="1101101";--2 WHEN"0011"=> B<="1111001";--3 WHEN"0100"=> B<="0110011";--4 WHEN"0101"=> B<="1011011";--5 WHEN"0110"=> B<="1011111";--6 WHEN"0111"=> B<="1110000";--7 WHEN"1000"=> B<="1111111";--8 WHEN"1001"=> B<="1111011";--9 WHEN OTHERS=> B<="ZZZZZZZ"; END CASE; END PROCESS; END encoder_arch;

(1)带异步复位的四位二进制减计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count_1 IS PORT(

clk,reset:IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END count_1;

ARCHITECTURE a OF count_1 IS

SIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(clk,reset)

BEGIN

IF reset='0' THEN q_temp <="1111";

ELSIF clk'EVENT AND clk='1' THEN q_temp <=q_temp-1; END IF;