VHDL第一次实验报告

更新时间:2023-09-23 15:39:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

深 圳 大 学 实 验 报 告

课程名称: EDA技术

实验项目名称: 基本电路行为的描述

学院: 信息工程学院

专业: 电子信息工程

指导教师:

报告人: 学号: 班级: 2

实验时间:

实验报告提交时间: 2014年5月9日

教务部制

实验内容: 1 多路选择器(习题2.1) 2 ROM(习题3.4) 3 简易加法器(习题3.5) 4 通用译码器(习题4.4) 5 第五章习题5.1、5.5、5.6、5.7、5.8 实验要求: 1.依次完成各电路功能的VHDL代码编写 2.完成相应电路仿真,并对仿真结果截图,截图中要求尽可能多的体现不同输入信号对应的输入结果 3.完成实验报告,并按时提交至Blackboard,实验报告见实验报告模板,要求按模板各项内容完成。 4.特别提示:实验报告按模板内容逐项填写,要求有完整的VHDL代码、仿真测试文件(VHDL test bench)、仿真结果截图、仿真结果分析、实验结论(或对实验的总结、心得体会)等内容。 实验过程及内容: 2.1 多路选择器 多路选择器的顶层电路如图P2.1所示。根据真值表,如果输入sel=“01”或者sel=“10”,那么输出将等于对应的某一输入(c=a或c=b).然而如果输入sel=“00”或者sel=“11”,那么输出将分别为‘0’和‘Z’(高阻)。 (a)填写表格,完成下面的代码。 (b)是对你的解答给出相关的注释。 (c)将代码编译后进行仿真,验证其正确性。 实验完整VHDL代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mux is Port ( a : in STD_LOGIC_VECTOR(7 DOWNTO 0); b : in STD_LOGIC_VECTOR(7 DOWNTO 0); sel : in STD_LOGIC_VECTOR(1 DOWNTO 0); c : out STD_LOGIC_VECTOR(7 DOWNTO 0)); end mux; architecture example of mux is begin PROCESS (a,b,sel) begin IF (sel=\ c <= \ ELSIF (sel=\ c <= a; ELSIF (sel=\ c <= b; ELSE c <= (OTHERS => 'U'); END IF; END PROCESS; end EXAMPLE; 仿真测试文件代码: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Test_Mux IS END Test_Mux; ARCHITECTURE behavior OF Test_Mux IS COMPONENT mux PORT( a : IN std_logic_vector(7 downto 0); b : IN std_logic_vector(7 downto 0); sel : IN std_logic_vector(1 downto 0); c : OUT std_logic_vector(7 downto 0) ); END COMPONENT; --Inputs signal a : std_logic_vector(7 downto 0) := (others => '0'); signal b : std_logic_vector(7 downto 0) := (others => '0'); signal sel : std_logic_vector(1 downto 0) := (others => '0'); --Outputs signal c : std_logic_vector(7 downto 0); -- No clocks detected in port list. Replace below with -- appropriate port name BEGIN -- Instantiate the Unit Under Test (UUT) uut: mux PORT MAP ( a => a, b => b, sel => sel, c => c ); -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. a<=\ b<=\ sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; sel <=\ wait for 100 ns; -- insert stimulus here wait; end process; END; 仿真结果: 如图,当输入信号sel为“00”时,输出信号c为“00000000”;当输入信号sel为“01”时,输出信号c等于a即为“10101010”;当输入信号sel为“10”时,输出信号c等于b即为“11110000”;当输入信号sel为其他情况时,输出信号c等于自己设定的值,在此处即为“U”。 习题3.4 ROM 试用1*1维常数来实现只读存储器ROM(read-only memory),假设一个ROM由许多深度为8,位宽为4的块组成。提示:首先建立一个名为rom的数组,然后定义一个rom类型的信号来实现ROM,用常数值填充到ROM块中:CONSTANT my_rom:rom:=(values);。 实验完整VHDL代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ROM is Port ( addr : in integer range 0 to 7; data : out STD_LOGIC_vector(3 downto 0)); end ROM; architecture Behavioral of ROM is TYPE ROM IS ARRAY (0 TO 7) OF STD_LOGIC_VECTOR(3 DOWNTO 0); CONSTANT my_rom:ROM:= (\ \ \ \ \ \ \ \begin data <=my_rom(addr); end Behavioral; 仿真测试文件代码: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY rom1 IS END rom1; ARCHITECTURE behavior OF rom1 IS -- Component Declaration for the Unit Under Test (UUT)

本文来源:https://www.bwwdw.com/article/rczd.html

Top