资源描述
本文格式为Word版,下载可任意编辑广东海洋大学EDA实验报告 EDA 技术与应用试验报告 专 业 软件工程 班 级 学 号 姓 名 指导老师 完成日期 2021 年 1 月 4 日 成果: 目 录 试验一 开关、数码管和多路选择器 . 4 Part1 . 4 1.试验内容: . 4 2.试验设计: . 4 3.试验过程: . 4 4.试验结果: . 4 Part2 . 5 1.试验内容: . 5 2.试验设计: . 5 3.试验过程: . 5 4.试验结果: . 5 Part3 . 5 1.试验内容 . 5 2.试验设计 . 6 3.试验过程 . 6 4.试验结果 . 7 Part4 . 7 1.试验内容 . 7 2.试验设计 . 7 3.试验过程 . 8 4.试验结果 . 8 Part5 . 9 1.试验内容: . 9 2.试验设计: . 9 3.试验过程: . 10 4.试验结果: . 12 试验二 数字和显示 . 15 Part1 . 15 1.试验内容 . 15 2.试验设计 . 15 3.试验过程 . 16 4.试验结果 . 17 Part2 . 18 1.试验内容 . 18 2.试验设计 . 18 3.试验过程 . 20 4.试验结果 . 21 Part3 . 22 1.试验内容 . 22 2.试验设计 . 22 3.试验过程 . 23 4.试验结果 . 24 Part4 . 24 1.试验内容 . 24 2.试验设计 . 24 3.试验过程 . 25 4.试验结果 . 27 Part5 . 27 1.试验内容 . 27 2.试验设计: . 27 3.试验过程 . 28 4.试验结果 . 29 Part7 . 30 1.试验内容: . 30 2.试验设计: . 30 3.试验过程: . 32 4.试验结果: . 35 试验三 触发器、翻转和锁存器 . 37 Part1 . 37 1.试验内容 . 37 2.试验设计 . 37 3.试验过程: . 37 4.试验结果 . 38 Part2 . 38 1.试验内容 . 38 2.试验设计 . 38 3.试验过程 . 39 4.试验结果 . 39 Part3 . 40 1.试验内容 . 40 2.试验设计 . 40 3.试验过程 . 40 4.试验结果 . 41 Part4 . 41 1.试验内容 . 41 2.试验设计 . 42 Part5 . 43 1.试验内容: . 43 2.试验设计: . 43 3.试验过程: . 44 4.试验结果: . 46 实 验一 一 开关、数码管和多路选择器 Part1 1. 试验内容: : 通过 SW0-17 掌握 LEDR 的亮灭 2. 试验设计: : SW 输入直接接 LEDR 3. 试验过程: : 代码如下: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY LabIPartI IS PORT ( SW : IN STD_LOGIC_VECTOR(17 DOWNTO 0); LEDR : OUT STD_LOGIC_VECTOR(17 DOWNTO 0); END LabIPartI; ARCHITECTURE Behavior OF LabIPartI IS BEGIN LEDR lt;= SW; END Behavior; 4. 试验结果: : SW(1)=0.其余为 1 结果:LEDR(1)=1 Part2 1. 试验 内容: : 二选一选择器 2. 试验设计: : 两个输入 x,y 一个掌握信号 s 输出 z 3. 试验过程: : 代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21 IS PORT(X,Y:IN STD_LOGIC; S :IN STD_LOGIC; Z :OUT STD_LOGIC); END mux21; ARCHITECTURE BEV_MUX21 OF mux21 IS BEGIN Zlt;=X WHEN S=0 ELSE Y; END BEV_MUX21; 4. 试验结果: : 仿真图:x ,y 都输入 1,选择信号为 1 选择 y,故 z=1; Part3 1. 试验内容 利用二选一选择器组合成 3 位五选一的选择器,电路图 1 所示,真值表图 2 图 1 图 2 2. 试验 设计 设计思路:利用四个二选一选择器组合成一个三位五选一 3. 试验 过程 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux3b51 IS PORT(D4,D3,D2,D1,D0:IN STD_LOGIC_VECTOR(2 DOWNTO 0); s2,s1,s0:IN STD_LOGIC; Y0:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END mux3b51; ARCHITECTURE bev OF mux3b51 IS COMPONENT mux3b21 PORT ( a,b:in std_logic_VECTOR(2 DOWNTO 0); s:in std_logic; y:out std_logic_VECTOR(2 DOWNTO 0) ); END COMPONENT; SIGNAL E1,E2,E3: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN U1:mux3b21 PORT MAP(D0,D1,s0,E1); U2:mux3b21 PORT MAP(D2,D3,s0,E2); U3:mux3b21 PORT MAP(E1,E2,s1,E3); U4:mux3b21 PORT MAP(E3,D4,s2,Y0); END bev; 4. 试验结果 仿真图: Part4 1. 试验内容 把输入的三位二进制数转换成一个十进制数在 7 段数码管上显示 2. 试验 设计 设计思路:把利用编码器,把三位二进制数转换成 7 位二进制数。 3. 试验 过程 代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY number0to9 IS PORT (IN0,IN1,IN2,IN3:IN STD_LOGIC; OUTPUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END number0to9; ARCHITECTURE BEV_OF_NUMBER OF number0to9 IS SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN SELlt;=IN3amp;IN2amp;IN1amp;IN0; OUTPUTlt;=quot;1000000quot; WHEN SEL=quot;0000quot; ELSE quot;1111001quot; WHEN SEL=quot;0001quot; ELSE quot;0100100quot; WHEN SEL=quot;0010quot; ELSE quot;0110000quot; WHEN SEL=quot;0011quot; ELSE quot;0011001quot; WHEN SEL=quot;0100quot; ELSE quot;0010010quot; WHEN SEL=quot;0101quot; ELSE quot;0000010quot; WHEN SEL=quot;0110quot; ELSE quot;1111000quot; WHEN SEL=quot;0111quot; ELSE quot;0000000quot; WHEN SEL=quot;1000quot; ELSE quot;0010000quot; WHEN SEL=quot;1001quot; ELSE quot;1111111quot; END BEV_OF_NUMBER; 4. 试验结果 仿真图: Part5 1. 试验内容: : 考虑图七所示的电路,利用一个 3 位宽的 5 选 1 多路选择器来在 7 段数码管显示 5个字符,使用第四部分的 7 段解码器,该电路可以显示 H、E、L、O 和空白字符。使用开关 SW14-0 依据表一设置字符代码,通过设置开关 SW17-15 选择特定字符进行显示。本次试验要求使用第三部分和第四部分试验中的电路作为子电路,你需要扩展图 8中的代码,以便它使用五个七段数码管显示,而不仅仅是一个。你需要使用每个子电路实例。并且当开关 SW17-15 被切换时,能够在显示器上循环改单词,表 2 即为所示的输出模式。 表 2 2 2. . 试验设 计: : 顶层图:依照表 2 的输出模式,即每一列对应一个字母选择,由名 mux51 的选择器选择五个译码器的输出结果。图中的每个译码器输入输出对应图 1 真值表。 设计:五选一选择器由四个二选一选择器构成。五个字母在七段共阴极数码管显示利用第四部分的译码器组合而成。可通过 SW2-0 让五个字母循环显示 译码器真值表如图: 图 1 3 3. . 试验过程: : 顶层图代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY part5 IS PORT(SW:IN STD_LOGIC_VECTOR(17 DOWNTO 0); HEX0,HEX1,HEX2,HEX3,HEX4:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END part5; ARCHITECTURE BEVPART5 OF part5 IS COMPONENT char1 -第一个字母元件例化 PORT(INPUT1:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUT1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT char2 -其次个字母元件例化 PORT (INPUT2:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUT2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT char3 -第三个字母元件例化 PORT(INPUT3:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUT3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT char4 -第四个字母元件例化 PORT(INPUT4:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUT4:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT char5 -第五个字母元件例化 PORT(INPUT5:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUT5:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT mux51 -五选一选择器例化 PORT(S,U,V,W,X,Y:IN STD_LOGIC_VECTOR(2 DOWNTO 0); -S 为掌握信号 M:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END COMPONENT; SIGNAL A:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN U1:mux51 PORT MAP(SW(2 DOWNTO 0),SW(5 DOWNTO 3),SW(8 DOWNTO 6),SW(11 DOWNTO 9),SW(14 DOWNTO 12),SW(17 DOWNTO 15),A); -SW2-0 掌握字母的循环显示 CH1:char1 PORT MAP(A,HEX4); -输出的字母在数码管上显示 CH2:char2 PORT MAP(A,HEX3); CH3:char3 PORT MAP(A,HEX2); CH4:char4 PORT MAP(A,HEX1); CH5:char5 PORT MAP(A,HEX0); END BEVPART5; 三位五选一: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux3b51 IS PORT(D4,D3,D2,D1,D0:IN STD_LOGIC_VECTOR(2 DOWNTO 0); s2,s1,s0:IN STD_LOGIC; Y0:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END mux3b51; ARCHITECTURE bev OF mux3b51 IS COMPONENT mux3b21-对三位二选一例化 PORT ( a,b:in std_logic_VECTOR(2 DOWNTO 0); s:in std_logic; y:out std_logic_VECTOR(2 DOWNTO 0) ); END COMPONENT; SIGNAL E1,E2,E3: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN U1:mux3b21 PORT MAP(D0,D1,s0,E1); U2:mux3b21 PORT MAP(D2,D3,s0,E2); U3:mux3b21 PORT MAP(E1,E2,s1,E3); U4:mux3b21 PORT MAP(E3,D4,s2,Y0); END bev; 4. 试验结果: : 仿真图: 当输入为000时 HEX0 显示字母O 当输入为000时 HEX1 显示字母L 当输入为000时 HEX2 显示字母L 当输入为000时 HEX3 显示字母E 当输入为000时 HEX4 显示字母H 运行结果:通过 SW0-2 调整显示 当 SW2-0=000 时 当 SW2-0=001 时 当 SW2-0=010 时 当 SW2-0=011 时 当 SW2-0=100 时 试验二 数字和显示 Part1 1. 试验内容 在 7 段显示器上显示由开关 SW150 设置的值 hex3 到 hex0。让 SW1512、SW118、SW74 和 SW30 表示的值分别显示在 hex3、hex2、hex1 和 hex0 上。电路应当能够显示 0到 9 之间的数字,并且应当将 1010 到 1111 的值忽视。 2. 试验设计 设计思路:SW0-3 对应 HEX0,SW4-7 对应 HEX1,SW8-11 对应 HEX2,SW12-15 对应 HEX3。 顶层图是由四个数据译码器组成。 最底层译码器如图: 顶层电路如图: 3. 试验 过程 顶层代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY display0to9 IS PORT(SW:IN STD_LOGIC_VECTOR(15 DOWNTO 0); HEX0,HEX1,HEX2,HEX3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY; ARCHITECTURE BEV1 OF display0to9 IS COMPONENT number0to9 -把四位 2 进制数转换成 1 位十进制数并在数码管上显示 PORT(INPUT:IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUTPUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; BEGIN N1:number0to9 PORT MAP(SW(3 DOWNTO 0),HEX0); N2:number0to9 PORT MAP(SW(7 DOWNTO 4),HEX1); N3:number0to9 PORT MAP(SW(11 DOWNTO 8),HEX2); N4:number0to9 PORT MAP(SW(15 DOWNTO 12),HEX3); END ARCHITECTURE; 器件 number0to9: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY number0to9 IS PORT (IN0,IN1,IN2,IN3:IN STD_LOGIC; OUTPUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END number0to9; ARCHITECTURE BEV_OF_NUMBER OF number0to9 IS SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN SELlt;=IN3amp;IN2amp;IN1amp;IN0; OUTPUTlt;=quot;1000000quot; WHEN SEL=quot;0000quot; ELSE quot;1111001quot; WHEN SEL=quot;0001quot; ELSE quot;0100100quot; WHEN SEL=quot;0010quot; ELSE quot;0110000quot; WHEN SEL=quot;0011quot; ELSE quot;0011001quot; WHEN SEL=quot;0100quot; ELSE quot;0010010quot; WHEN SEL=quot;0101quot; ELSE quot;0000010quot; WHEN SEL=quot;0110quot; ELSE quot;1111000quot; WHEN SEL=quot;0111quot; ELSE quot;0000000quot; WHEN SEL=quot;1000quot; ELSE quot;0010000quot; WHEN SEL=quot;1001quot; ELSE quot;1111111quot; END BEV_OF_NUMBER; 4. 试验结果 SW0-15 一次输入的数为 1 2 3 4, HEX0:1111001(1) HEX1:0100100(2) HEX2:0110000(3) HEX3:0011001(4) Part2 1. 试验内容 设计一个将四位二进制数 v=v3v2v1v0 转换为两位十进制数 d=d1d0 的电路。表 1 显示了所需的输出值。该电路的部分设计如图 1 所示。它包括一个比较器,用于检查 V 值是否大于 9,并在 7 段显示器的掌握中使用该比较器的输出。您将通过创建包含比较器、多路复用器和电路 A(此时不包括电路 B 或 7 段解码器)的 VHDL 实体来完成此电路的设计。vhdl实体应当具有四位输入 v、四位输出 m 和输出 z。本练习的目的是使用简洁的 vhdl 赋值语句来使用布尔表达式指定所需的规律函数。 2. 试验 设计 设计思路:把比较器、二选选择器,circuitA 封装成一个器件。比较器的设计是让输入的四位数的第 4 位和第三位做与运算,第四位和其次位做与运算,若有其中一个与运算的结果为 1,则证明这个数大于 9 则有进位。然后对数据的第 1,2,3 位进行处理,把十位和个位在 HEX 上显示。 比较器、二选选择器,circuitA 封装成一个器件 顶层图: 3. 试验 过程 顶层代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LPII IS PORT (SW:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HEX0,HEX1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END LPII; ARCHITECTURE BEV_LPII OF LPII IS COMPONENT manage_L2PII PORT(V0,V1,V2,V3:IN STD_LOGIC; OUTPUT0,OUTPUT1,OUTPUT2,OUTPUT3,OUTPUT4:OUT STD_LOGIC); END COMPONENT; COMPONENT circuitB PORT(ZIN:IN STD_LOGIC; ZOUTPUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT number0to9 PORT(IN0,IN1,IN2,IN3:IN STD_LOGIC; OUTPUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; SIGNAL m0,m1,m2,m3,z:STD_LOGIC; SIGNAL M:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN MA:manage_L2PII PORT MAP(SW(0),SW(1),SW(2),SW(3),m0,m1,m2,m3,z); CI:circuitB PORT MAP(Z,HEX1); NU:number0to9 PORT MAP(m0,m1,m2,m3,HEX0); END BEV_LPII; 比较器、二选选择器,circuitA 封装成一个器件代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY manage_L2PII IS PORT(V0,V1,V2,V3:IN STD_LOGIC; OUTPUT0,OUTPUT1,OUTPUT2,OUTPUT3,OUTPUT4:OUT STD_LOGIC); END manage_L2PII;
展开阅读全文