VHDL硬件描述语言实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
硬件描述语言实验附录
姓名:xxx
学号:xxx
指导教师:xxx
目录
硬件描述语言实验附录 (1)
实验1.三输入与门电路实验 (2)
实验2. 三—八译码器实验 (3)
实验3. D触发器实验 (4)
实验4. 分频器实验 (5)
实验5. 状态机实验 (8)
实验1.三输入与门电路实验
--三输入与门电路threeinput
--姓名:王定
--学号:1306034248
--中北大学
LIBRARY IEEE; --调用库
USE IEEE.STD_LOGIC_1164.ALL;--库文件
--------------------------------------------------------------
ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入
B: IN STD_LOGIC; --输入端口,个位写入使能
C: IN STD_LOGIC; --输入端口,十位写入使能
CO: OUT STD_LOGIC); --输出端口,溢出标志
END ENTITY threeinput; --结束端口定义
--------------------------------------------------------------
ARCHITECTURE RTL OF threeinput IS--定义结构体
BEGIN
PROCESS(A,B,C) IS --开始,必须带上
BEGIN
CO<=A AND B AND C ;
END PROCESS;
END ARCHITECTURE RTL; --结束结构体
表1. 三输入与门电路VHDL实验代码
图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出
实验2. 三—八译码器实验
--王定--2015年11月25日--3线-8线译码器
LIBRARYIEEE; --调用库
USEIEEE.STD_LOGIC_1164.ALL; --库文件
-------------------------------------------------------------
ENTITYthreetoeightIS
PORT(
DA TAIN:INSTD_LOGIC_VECTOR(2DOWNTO0);
--数据输入
DA TAOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--
数据输出
ENDENTITYthreetoeight; --结束实体
-------------------------------------------------------------
ARCHITECTUREBEHA VEOFthreetoeightIS--结构体
BEGIN --不能漏掉
PROCESS(DATAIN) --数据输入
BEGIN --开始,不能漏掉
CASEDATAINIS --情况判定
WHEN"000"=>DA TAOUT<="00000001";
WHEN"001"=>DA TAOUT<="00000010";
WHEN"010"=>DA TAOUT<="00000100";
WHEN"011"=>DATAOUT<="00001000";
WHEN"100"=>DA TAOUT<="00010000";
WHEN"101"=>DA TAOUT<="00100000";
WHEN"110"=>DATAOUT<="01000000";
WHEN"111"=>DA TAOUT<="10000000";
WHENOTHERS=>null;
ENDCASE;
ENDPROCESS;
ENDBEHA VE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY decoder_3_to_8 IS
PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;
y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END decoder_3_to_8;
ARCHITECTURE rtl OF decoder_3_to_8 IS
SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);
BEGIN
indata <= c & b & a;
PROCESS (indata,g1,g2a,g2b)
BEGIN
IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN
CASE indata IS
WHEN "000" => y <= "11111110";
WHEN "001" => y <= "11111101";
WHEN "010" => y <= "11111011";
WHEN "011" => y <= "11110111";
WHEN "100" => y <= "11101111";
WHEN "101" => y <= "11011111";
WHEN "110" => y <= "10111111";
WHEN "111" => y <= "01111111";
WHEN OTHERS=>y<= "XXXXXXXX";
END CASE;
ELSE
Y <= "11111111";
END IF;
END PROCESS;
END rtl;
表2. 三—八译码器VHDL实验代码
图2. 三—八译码器仿真波形图