当前位置:文档之家› 海大 EDA实验1参考答案

海大 EDA实验1参考答案

海大 EDA实验1参考答案
海大 EDA实验1参考答案

Laboratory Exercise 1

Switches, Lights, and Multiplexers ED实验参与答案

Part1

library ieee;

use ieee.std_logic_1164.all;

entity part1 is

port(SW :in std_logic_vector(17 downto 0);

LEDR :out std_logic_vector(17 downto 0));

end part1;

architecture Behavior of part1 is

begin

LEDR <= SW;

end Behavior;

part2

library ieee;

use ieee.std_logic_1164.all;

--a 2 to 1 multiplexer entity

entity mux21 is

port(in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end mux21;

--a 2 to 1 multiplexer architecture

architecture structural of mux21 is

signal u, v : std_logic;

begin

u <= in_x and (not in_s);

v <= in_y and in_s ;

out_m <= u or v ;

end structural;

--a eight-bit wide 2 to 1 multiplexer

library ieee;

use ieee.std_logic_1164.all;

--eight-bit wide 2 to 1 multiplexer entity

entity mux21_8bit is

port(

SW : in std_logic_vector (17 downto 0);

--SW : in std_logic_vector (15 downto 8);

--SW : in std_logic_vector (17 downto 17);

LEDR : out std_logic_vector (7 downto 0));

end mux21_8bit;

--eight-bit wide 2 to 1 multiplexera rchitecture

architecture Structural of mux21_8bit is

component mux21

port(in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end component;

begin

U1: mux21 port map (in_x=>SW(0), in_y=>SW(8), in_s=>SW(17), out_m=>LEDR(0));

U2: mux21 port map (in_x=>SW(1), in_y=>SW(9), in_s=>SW(17), out_m=>LEDR(1));

U3: mux21 port map (in_x=>SW(2), in_y=>SW(10), in_s=>SW(17), out_m=>LEDR(2));

U4: mux21 port map (in_x=>SW(3), in_y=>SW(11), in_s=>SW(17), out_m=>LEDR(3));

U5: mux21 port map (in_x=>SW(4), in_y=>SW(12), in_s=>SW(17), out_m=>LEDR(4));

U6: mux21 port map (in_x=>SW(5), in_y=>SW(13), in_s=>SW(17), out_m=>LEDR(5));

U7: mux21 port map (in_x=>SW(6), in_y=>SW(14), in_s=>SW(17), out_m=>LEDR(6));

U8: mux21 port map (in_x=>SW(7), in_y=>SW(15), in_s=>SW(17), out_m=>LEDR(7));

end Structural;

part3

library ieee;

use ieee.std_logic_1164.all;

--a 2 to 1 multiplexer entity

entity mux21 is

port(in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end mux21;

--a 2 to 1 multiplexer architecture

architecture structural of mux21 is

signal signal_u, signal_v : std_logic;

begin

signal_u <= in_x and (not in_s);

signal_v <= in_y and in_s ;

out_m <= signal_u or signal_v ;

end structural;

library ieee;

use ieee.std_logic_1164.all;

--a 5 to 1 multiplexer entity

entity mux51 is

port(in5_u, in5_v, in5_w, in5_x, in5_y, in5_s1, in5_s2, in5_s0 :in std_logic;

out5_m :out std_logic);

end mux51;

--a 5 to 1 multiplexer architecture

architecture Structural of mux51 is

component mux21

port (in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end component;

signal signal_a, signal_b, signal_c : std_logic;

begin

U1: mux21 port map (in_x=>in5_u, in_y=>in5_v, in_s=>in5_s0, out_m=>signal_a);

U2: mux21 port map (in_x=>in5_w, in_y=>in5_x, in_s=>in5_s0, out_m=>signal_b);

U3: mux21 port map (in_x=>signal_a, in_y=>signal_b, in_s=>in5_s1, out_m=>signal_c);

U4: mux21 port map (in_x=>signal_c, in_y=>in5_y, in_s=>in5_s2, out_m=>out5_m);

end Structural;

library ieee;

use ieee.std_logic_1164.all;

--a 3bit 5 to 1 multiplexer entity

entity mux51_3bit is

port(SW : in std_logic_vector (17 downto 0);

LEDR : out std_logic_vector (17 downto 0);

LEDG : out std_logic_vector (2 downto 0));

end mux51_3bit;

--a 3bit 5 to 1 multiplexer architecture

architecture structural of mux51_3bit is

component mux51

port(in5_u, in5_v, in5_w, in5_x, in5_y, in5_s1, in5_s2, in5_s0 :in std_logic;

out5_m :out std_logic);

end component;

begin

LEDR <= sw;

U1: mux51 port map (in5_u=>SW(0), in5_v=>SW(3), in5_w=>SW(6), in5_x=>SW(9), in5_y=>SW(12),

in5_s0=>SW(15), in5_s1=>SW(16), in5_s2=>SW(17), out5_m=>LEDG(0));

U2: mux51 port map (in5_u=>SW(1), in5_v=>SW(4), in5_w=>SW(7), in5_x=>SW(10), in5_y=>SW(13),

in5_s0=>SW(15), in5_s1=>SW(16), in5_s2=>SW(17), out5_m=>LEDG(1));

U3: mux51 port map (in5_u=>SW(2), in5_v=>SW(5), in5_w=>SW(8), in5_x=>SW(11), in5_y=>SW(14),

in5_s0=>SW(15), in5_s1=>SW(16), in5_s2=>SW(17), out5_m=>LEDG(2));

end structural;

part4

library ieee;

use ieee.std_logic_1164.all;

--a 7-segment decoder entity

entity decoder is

port(decoder_in_3 : in std_logic_vector(2 downto 0);

HEX0 : out std_logic_vector(0 to 6));

end decoder;

-- a 7-segment decorder architecture

architecture behavioral of decoder is

begin

process(decoder_in_3)

begin

case decoder_in_3 is

when "000" => HEX0 <= "0001001";

when "001" => HEX0 <= "0000110";

when "010" => HEX0 <= "1000110";

when "011" => HEX0 <= "1000000";

when others => Hex0 <= "1111111";

end case;

end process;

end behavioral;

part5

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 Behavior of part5 is

component mux51_seg7

port(Mux51_seg7_in : in std_logic_vector(17 downto 0);

Seg : out std_logic_vector(6 downto 0));

end component;

begin

U0: mux51_seg7 port map(Mux51_seg7_in=>SW,Seg=>HEX0);

U1: mux51_seg7 port map(Mux51_seg7_in(17 downto 15)=>SW(17 downto 15), Mux51_seg7_in(14 downto 12)=>SW(11 downto 9),

Mux51_seg7_in(11 downto 9)=>SW(8 downto 6), Mux51_seg7_in(8 downto 6)=>SW(5 downto 3),

Mux51_seg7_in(5 downto 3)=>SW(2 downto 0), Mux51_seg7_in(2 downto 0)=>SW(14 downto 12),

Seg=>HEX1);

U2: mux51_seg7 port map(Mux51_seg7_in(17 downto 15)=>SW(17 downto 15), Mux51_seg7_in(14 downto 12)=>SW(8 downto 6),

Mux51_seg7_in(11 downto 9)=>SW(5 downto 3), Mux51_seg7_in(8 downto 6)=>SW(2 downto 0),

Mux51_seg7_in(5 downto 3)=>SW(14 downto 12), Mux51_seg7_in(2 downto 0)=>SW(11 downto 9),

Seg=>HEX2);

U3: mux51_seg7 port map(Mux51_seg7_in(17 downto 15)=>SW(17 downto 15), Mux51_seg7_in(14 downto 12)=>SW(5 downto 3),

Mux51_seg7_in(11 downto 9)=>SW(2 downto 0), Mux51_seg7_in(8 downto 6)=>SW(14 downto 12),

Mux51_seg7_in(5 downto 3)=>SW(11 downto 9), Mux51_seg7_in(2 downto 0)=>SW(8 downto 6),

Seg=>HEX3);

U4: mux51_seg7 port map(Mux51_seg7_in(17 downto 15)=>SW(17 downto 15), Mux51_seg7_in(14 downto 12)=>SW(2 downto 0),

Mux51_seg7_in(11 downto 9)=>SW(14 downto 12), Mux51_seg7_in(8 downto 6)=>SW(11 downto 9),

Mux51_seg7_in(5 downto 3)=>SW(8 downto 6), Mux51_seg7_in(2 downto 0)=>SW(5 downto 3),

Seg=>HEX4);

end Behavior;

-----------------------------------------------------------------------------------------------

-----------A circuit that can select and display one of five characters------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

entity mux51_seg7 is

port(Mux51_seg7_in : in std_logic_vector(17 downto 0);

Seg : out std_logic_vector(6 downto 0));

end mux51_seg7;

architecture Behavior of mux51_seg7 is

component mux51_3bit

port(S, U, V, W, X, Y : in std_logic_vector(2 downto 0);

M : out std_logic_vector(2 downto 0));

end component;

component char_7seg

port(C : in std_logic_vector(2 downto 0);

Display : out std_logic_vector(6 downto 0));

end component;

signal M : std_logic_vector(2 downto 0);

begin

M0: mux51_3bit port map(Mux51_seg7_in(17 downto 15), Mux51_seg7_in(14 downto 12),Mux51_seg7_in(11 downto 9),

Mux51_seg7_in(8 downto 6),Mux51_seg7_in(5 downto 3),Mux51_seg7_in(2 downto 0),M);

H0: char_7seg port map(M, Seg);

end Behavior;

-----------------------------------------------------------------------------------------------

------------------------------a 3bit mux51-----------------------------------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--a 2 to 1 multiplexer entity

entity mux21 is

port(in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end mux21;

--a 2 to 1 multiplexer architecture

architecture structural of mux21 is

signal signal_u, signal_v : std_logic;

begin

signal_u <= in_x and (not in_s);

signal_v <= in_y and in_s ;

out_m <= signal_u or signal_v ;

end structural;

library ieee;

use ieee.std_logic_1164.all;

--a 5 to 1 multiplexer entity

entity mux51 is

port(in5_u, in5_v, in5_w, in5_x, in5_y, in5_s1, in5_s2, in5_s0 :in std_logic;

out5_m :out std_logic);

end mux51;

--a 5 to 1 multiplexer architecture

architecture Structural of mux51 is

component mux21

port (in_x, in_y, in_s :in std_logic;

out_m :out std_logic);

end component;

signal signal_a, signal_b, signal_c : std_logic;

begin

U1: mux21 port map (in_x=>in5_u, in_y=>in5_v, in_s=>in5_s0, out_m=>signal_a);

U2: mux21 port map (in_x=>in5_w, in_y=>in5_x, in_s=>in5_s0, out_m=>signal_b);

U3: mux21 port map (in_x=>signal_a, in_y=>signal_b, in_s=>in5_s1, out_m=>signal_c);

U4: mux21 port map (in_x=>signal_c, in_y=>in5_y, in_s=>in5_s2, out_m=>out5_m);

end Structural;

-----------------------------------------------------------------------------------------------

------------------------------a 3bit 5 to 1 multiplexer----------------------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--a 3bit 5 to 1 multiplexer entity

entity mux51_3bit is

port(S, U, V, W, X, Y : in std_logic_vector (2 downto 0);

M : out std_logic_vector (2 downto 0));

end mux51_3bit;

--a 3bit 5 to 1 multiplexer architecture

architecture structural of mux51_3bit is

component mux51

port(in5_u, in5_v, in5_w, in5_x, in5_y, in5_s1, in5_s2, in5_s0 :in std_logic;

out5_m :out std_logic);

end component;

begin

U1: mux51 port map (in5_u=>U(0), in5_v=>V(0), in5_w=>W(0), in5_x=>X(0), in5_y=>Y(0),

in5_s0=>S(0), in5_s1=>S(1), in5_s2=>S(2), out5_m=>M(0));

U2: mux51 port map (in5_u=>U(1), in5_v=>V(1), in5_w=>W(1), in5_x=>X(1), in5_y=>Y(1),

in5_s0=>S(0), in5_s1=>S(1), in5_s2=>S(2), out5_m=>M(1));

U3: mux51 port map (in5_u=>U(2), in5_v=>V(2), in5_w=>W(2), in5_x=>X(2), in5_y=>Y(2),

in5_s0=>S(0), in5_s1=>S(1), in5_s2=>S(2), out5_m=>M(2));

end structural;

-----------------------------------------------------------------------------------------------

------------------------------a 7-segment decoder----------------------------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--a 7-segment decoder entity

entity char_7seg is

port( C : in std_logic_vector(2 downto 0);

Display : out std_logic_vector(6 downto 0));

end char_7seg;

-- a 7-segment decorder architecture

architecture behavioral of char_7seg is

begin

process(C)

begin

case C is

when "000" => Display <= "0001001";

when "001" => Display <= "0000110";

when "010" => Display <= "1000111";

when "011" => Display <= "1000000";

when others => Display <= "1111111";

end case;

end process;

end behavioral;

part6

--------------------------------------------------------------------------------------------

------------------Rotating the word HELLO on eight displays.--------------------------------

--SW(17~15): select

--SW(14~12): H

--SW(11~9): E

--SW(8~6): L

--SW(5~3): O

--SW(2~0): none

---------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

entity part6 is

port( SW : in std_logic_vector(17 downto 0);

HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7 : out std_logic_vector(6 downto 0)); end part6;

architecture Behavior of part6 is

component mux81_seg7

port(S, D0, D1, D2, D3, D4, D5, D6, D7 : in std_logic_vector(2 downto 0);

Seg : out std_logic_vector(6 downto 0));

end component;

begin

U0: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(2 downto 0),D1=>SW(2 downto 0),D2=>SW(2 downto 0),D3=>SW(14 downto 12),

D4=>SW(11 downto 9),D5=>SW(8 downto 6),D6=>SW(8 downto 6),D7=>SW(5 downto 3),Seg=>HEX0);

U1: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(2 downto 0),D1=>SW(2 downto 0),D2=>SW(14 downto 12),D3=>SW(11 downto 9),

D4=>SW(8 downto 6),D5=>SW(8 downto 6),D6=>SW(5 downto 3),D7=>SW(2 downto 0),Seg=>HEX1);

U2: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(2 downto 0),D1=>SW(14 downto 12),D2=>SW(11 downto 9),D3=>SW(8 downto 6),

D4=>SW(8 downto 6),D5=>SW(5 downto 3),D6=>SW(2 downto 0),D7=>SW(2 downto 0),Seg=>HEX2);

U3: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(14 downto 12),D1=>SW(11

downto 9),D2=>SW(8 downto 6),D3=>SW(8 downto 6),

D4=>SW(5 downto 3),D5=>SW(2 downto 0),D6=>SW(2 downto 0),D7=>SW(2 downto 0),Seg=>HEX3);

U4: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(11 downto 9),D1=>SW(8 downto 6),D2=>SW(8 downto 6),D3=>SW(5 downto 3),

D4=>SW(2 downto 0),D5=>SW(2 downto 0),D6=>SW(2 downto 0),D7=>SW(14 downto 12),Seg=>HEX4);

U5: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(8 downto 6),D1=>SW(8 downto 6),D2=>SW(5 downto 3),D3=>SW(2 downto 0),

D4=>SW(2 downto 0),D5=>SW(2 downto 0),D6=>SW(14 downto 12),D7=>SW(11 downto 9),Seg=>HEX5);

U6: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(8 downto 6),D1=>SW(5 downto 3),D2=>SW(2 downto 0),D3=>SW(2 downto 0),

D4=>SW(2 downto 0),D5=>SW(14 downto 12),D6=>SW(11 downto 9),D7=>SW(8 downto 6),Seg=>HEX6);

U7: mux81_seg7 port map(S=>SW(17 downto 15),D0=>SW(5 downto 3),D1=>SW(2 downto 0),D2=>SW(2 downto 0),D3=>SW(2 downto 0),

D4=>SW(14 downto 12),D5=>SW(11 downto 9),D6=>SW(8 downto 6),D7=>SW(8 downto 6),Seg=>HEX7);

end Behavior;

-----------------------------------------------------------------------------------------------

-----------A circuit that can select and display one of eight characters-----------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--eht mux81_seg7 entity

entity mux81_seg7 is

port(S, D0, D1, D2, D3, D4, D5, D6, D7 : in std_logic_vector(2 downto 0);

Seg : out std_logic_vector(6 downto 0));

end mux81_seg7;

--the mux81_seg7 architecture

architecture Behavior of mux81_seg7 is

component mux81_3bit

port(S, D0, D1, D2, D3, D4, D5, D6, D7 : in std_logic_vector(2 downto 0);

M : out std_logic_vector(2 downto 0));

end component;

component char_7seg

port(C : in std_logic_vector(2 downto 0);

Display : out std_logic_vector(6 downto 0));

end component;

signal M1 : std_logic_vector(2 downto 0);

begin

M0: mux81_3bit port map(S, D0, D1, D2, D3, D4, D5, D6, D7,M1);

H0: char_7seg port map(M1, Seg);

end Behavior;

-----------------------------------------------------------------------------------------------

------------------------------a 3bit mux81-----------------------------------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--a 3bit multiplexer 8 to 1 entity

entity mux81_3bit is

port(S, D0, D1, D2, D3, D4, D5, D6, D7 : in std_logic_vector(2 downto 0);

M : out std_logic_vector(2 downto 0)); end mux81_3bit;

--a 3bit multiplexer 8 to 1 architecture

architecture behavioral of mux81_3bit is

begin

with S select

M <= D0 when "000",

D1 when "001",

D2 when "010",

D3 when "011",

D4 when "100",

D5 when "101",

D6 when "110",

D7 when "111",

"ZZZ" when others;

end behavioral;

-----------------------------------------------------------------------------------------------

------------------------------a 7-segment decoder----------------------------------------------

-----------------------------------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

--a 7-segment decoder entity

entity char_7seg is

port( C : in std_logic_vector(2 downto 0);

Display : out std_logic_vector(6 downto 0));

end char_7seg;

-- a 7-segment decorder architecture

architecture behavioral of char_7seg is

begin

process(C)

begin

case C is

when "000" => Display <= "0001001";

when "001" => Display <= "0000110";

when "010" => Display <= "1000111";

when "011" => Display <= "1000000";

when others => Display <= "1111111";

end case;

end process;

end behavioral;

EDA技术试验问答题答案(基本包含)

第一章 1-1 EDA技术与ASIC设计和FPGA开发有什么关系?FPGA/CPLD在ASIC设计中有什么用途? 答:利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现;FPGA和CPLD是实现这一途径的主流器件。FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。FPGA/CPLD在ASIC设计中,属于可编程ASIC的逻辑器件;使设计效率大为提高,上市的时间大为缩短。 1-2与软件描述语言相比,VHDL有什么特点? P6 答:编译器将软件程序翻译成基于某种特定CPU的机器代码,这种代码仅限于这种CPU而不能移植,并且机器代码不代表硬件结构,更不能改变CPU的硬件结构,只能被动地为其特定的硬件电路结构所利用。综合器将VHDL程序转化的目标是底层的电路结构网表文件,这种满足VHDL设计程序功能描述的电路结构,不依赖于任何特定硬件环境;具有相对独立性。综合器在将VHDL(硬件描述语言)表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。 l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么? P5 什么是综合? 答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。 有哪些类型?答:(1)从自然语言转换到VHDL语言算法表示,即自然语言综合。(2)从算法表示转换到寄存器传输级(RegisterTransport Level,RTL),即从行为域到结构域的综合,即行为综合。(3)从RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。 综合在电子设计自动化中的地位是什么?答:是核心地位(见图1-3)。综合器具有更复杂的工作环境,综合器在接受VHDL程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库信息,以及获得优化综合的诸多约束条件信息;根据工艺库和约束条件信息,将VHDL程序转化成电路实现的相关信息。 1-4在EDA技术中,自顶向下的设计方法的重要意义是什么? P7~10 答:在EDA技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。 1-5 IP在EDA技术的应用和发展中的意义是什么? P11~12 答:IP核具有规范的接口协议,良好的可移植与可测试性,为系统开发提供了可靠的保证。 1-6 叙述EDA的FPGA/CPLD设计流程。P13~16 答:1.设计输入(原理图/HDL文本编辑);2.综合;3.适配;4.时序仿真与功能仿真;5.编程下载;6.硬件测试。

EDA技术实用教程课后习题答案

第一章 1-1 EDA 技术与ASIC 设计与FPGA 开发有什么关系? 答:利用EDA 技术进行电子系统设计得最后目标就是完成专用集成电路ASIC 得设计与实现;FPGA 与CPLD 就是实现 这一途径得主流器件。FPGA 与CPLD 通常也被称为可编程专用IC,或可编程ASIC。FPGA 与CPLD 得应用就是EDA 技术 有机融合软硬件电子设计技术、SoC(片上系统)与ASIC 设计,以及对自动设计与自动实现最典型得诠释。 1-2 与软件描述语言相比,VHDL 有什么特点? P6 答:编译器将软件程序翻译成基于某种特定CPU 得机器代码,这种代码仅限于这种CPU 而不能移植,并且机器 代码不代表硬件结构,更不能改变CPU 得硬件结构,只能被动地为其特定得硬件电路结构所利用。综合器将VHDL 程序转化得目标就是底层得电路结构网表文件,这种满足VHDL 设计程序功能描述得电路结构,不依赖于任何特定硬 件环境;具有相对独立性。综合器在将VHDL(硬件描述语言)表达得电路功能转化成具体得电路结构网表过程中,具 有明显得能动性与创造性,它不就是机械得一一对应式得“翻译”,而就是根据设计库、工艺库以及预先设置得各类约 束条件,选择最优得方式完成电路结构得设计。 l-3 什么就是综合?有哪些类型?综合在电子设计自动化中得地位就是什么? 什么就是综合? 答:在电子设计领域中综合得概念可以表示为:将用行为与功能层次表达得电子系统转换为低层 次得便于具体实现得模块组合装配得过程。 有哪些类型? 答:(1)从自然语言转换到VHDL 语言算法表示,即自然语言综合。(2)从算法表示转换到寄存器 传输级(RegisterTransport Level,RTL),即从行为域到结构域得综合,即行为综合。(3)从RTL 级表示转换到逻 辑门(包括触发器)得表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC 设计),或转换到FPGA 得配置网表 文件,可称为版图综合或结构综合。 综合在电子设计自动化中得地位就是什么? 答:就是核心地位(见图1-3)。综合器具有更复杂得工作环境,综合器 在接受VHDL 程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关得工艺库信息,以及获得优化综 合得诸多约束条件信息;根据工艺库与约束条件信息,将VHDL 程序转化成电路实现得相关信息。 1-4 在EDA 技术中,自顶向下得设计方法得重要意义就是什么? P7~10 答:在EDA 技术应用中,自顶向下得设计方法,就就是在整个设计流程中各设计环节逐步求精得过程。 1-5 IP 在EDA 技术得应用与发展中得意义就是什么? P11~12 答:IP 核具有规范得接口协议,良好得可移植与可测试性,为系统开发提供了可靠得保证。 第二章 2-1 叙述EDA 得FPGA/CPLD 设计流程。P13~16 答:1、设计输入(原理图/HDL 文本编辑);2、综合;3、适配;4、时序仿真与功能仿真;5、编程下载;6、硬件测试。 2-2 IP 就是什么?IP 与EDA 技术得关系就是什么? P24~26 IP 就是什么? 答:IP 就是知识产权核或知识产权模块,用于ASIC 或FPGA/CPLD 中得预先设计好得电路功能模块。 IP 与EDA 技术得关系就是什么? 答:IP 在EDA 技术开发中具有十分重要得地位;与EDA 技术得关系分有软IP、 固IP、硬IP:软IP 就是用VHDL 等硬件描述语言描述得功能块,并不涉及用什么具体电路元件实现这些功能;软IP 通常就是以硬件描述语言HDL 源文件得形式出现。固IP 就是完成了综合得功能块,具有较大得设计深度,以网表文件 得形式提交客户使用。硬IP 提供设计得最终阶段产品:掩模。 2-3 叙述ASIC 得设计方法。P18~19 答:ASIC 设计方法,按版图结构及制造方法分有半定制(Semi-custom)与全定制(Full-custom)两种实现方法。 全定制方法就是一种基于晶体管级得,手工设计版图得制造方法。 半定制法就是一种约束性设计方式,约束得目得就是简化设计,缩短设计周期,降低设计成本,提高设计正确率。 半定制法按逻辑实现得方式不同,可再分为门阵列法、标准单元法与可编程逻辑器件法。 2-4 FPGA/CPLD 在ASIC 设计中有什么用途? P16,18 答:FPGA/CPLD 在ASIC 设计中,属于可编程ASIC 得逻辑器件;使设计效率大为提高,上市得时间大为缩短。 2-5 简述在基于FPGA/CPLD 得EDA 设计流程中所涉及得EDA 工具,及其在整个流程中得作用。P19~23 答:基于FPGA/CPLD 得EDA 设计流程中所涉及得EDA 工具有:设计输入编辑器(作用:接受不同得设计输 入表达方式,如原理图输入方式、状态图输入方式、波形输入方式以及HDL 得文本输入方式。);HDL 综合器(作用: HDL 综合器根据工艺库与约束条件信息,将设计输入编辑器提供得信息转化为目标器件硬件结构细节得信息,并在 数字电路设计技术、化简优化算法以及计算机软件等复杂结体进行优化处理);仿真器(作用:行为模型得表达、 电子系统得建模、逻辑电路得验证及门级系统得测试);适配器(作用:完成目标系统在器件上得布局与布线);下 载器(作用:把设计结果信息下载到对应得实际器件,实现硬件设计)。 第三章 3-1 OLMC(输出逻辑宏单元)有何功能?说明GAL 就是怎样实现可编程组合电路与时序电路得。P34~36 OLMC 有何功能? 答:OLMC 单元设有多种组态,可配置成专用组合输出、专用输入、组合输出双向口、寄存器 输出、寄存器输出双向口等。 说明GAL 就是怎样实现可编程组合电路与时序电路得? 答:GAL(通用阵列逻辑器件)就是通过对其中得OLMC (输出逻辑宏单元)得编程与三种模式配置(寄存器模式、复合模式、简单模式),实现组合电路与时序电路设计 得。 3-2 什么就是基于乘积项得可编程逻辑结构? P33~34,40 答:GAL、CPLD 之类都就是基于乘积项得可编程结构;即包含有可编程与阵列与固定得或阵列得PAL(可编程阵

(完整版)EDA期末考试题1

1.一个项目的输入输出端口是定义在( A )1-5 ACDCD 6-10 CCACA A. 实体中;. B. 结构体中; C. 任何位置; D. 进程中。 2. MAXPLUS2中编译VHDL源程序时要求( C ) A. 文件名和实体可以不同名; B. 文件名和实体名无关; C. 文件名和实体名要相同; D. 不确定。 3. VHDL语言中变量定义的位置是(D ) A. 实体中中任何位置; B. 实体中特定位置; C. 结构体中任何位置; D. 结构体中特定位置。 4.可以不必声明而直接引用的数据类型是(C ) A. STD_LOGIC ; B. STD_LOGIC_VECTOR; C. BIT; D. ARRAY。 5. MAXPLUS2不支持的输入方式是(D ) A 文本输入;.B. 原理图输入;C. 波形输入;D. 矢量输入。 6.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是( C ) A. FPGA全称为复杂可编程逻辑器件; B. FPGA是基于乘积项结构的可编程逻辑器件; C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。 7.下面不属于顺序语句的是( C ) A. IF语句; B. LOOP语句; C. PROCESS语句; D. CASE语句。 8. VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,实体体描述的是( A ) A. 器件外部特性; B. 器件的内部功能; C. 器件的综合约束; D. 器件外部特性与内部功能。 9. 进程中的信号赋值语句,其信号更新是( C ) A. 按顺序完成; B. 比变量更快完成; C. 在进程的最后完成; D. 都不对。 10. 嵌套使用IF语句,其综合结果可实现:(A ) A. 带优先级且条件相与的逻辑电路; B. 条件相或的逻辑电路; C. 三态控制电路; D. 双向控制电路。 一、单项选择题:(20分) 1. IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述

8位全加器实验报告

实验1 原理图输入设计8位全加器 一、实验目的: 熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。 二、原理说明: 一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现。即将低位加法器的进位输出cout与其相邻的高位加法器的最低进位输入信号cin相接。而一个1位全加器可以按照本章第一节介绍的方法来完成。 三、实验内容: 1:完全按照本章第1节介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真。 2:建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。 四、实验环境: 计算机、QuartusII软件。 五、实验流程: 实验流程: 根据半加器工作原 理,建立电路并仿 真,并将元件封装。 ↓ 利用半加器构成一位 全加器,建立电路并 仿真,并将元件封 装。 ↓ 利用全加器构成8位全 加器,并完成编译、综 合、适配、仿真。 图1.1 实验流程图

六、实验步骤: 1.根据半加器工作原理建立电路并仿真,并将元件打包。(1)半加器原理图: 图1.2 半加器原理图(2)综合报告: 图1.3 综合报告: (3)功能仿真波形图4: 图1.4 功能仿真波形图

时序仿真波形图: 图1.5 时序仿真波形图 仿真结果分析:sout为和信号,当a=1,b=0或a=0,b=1时,和信号sout为1,否则为0.当a=b=1时,产生进位信号,及cout=1。 (4)时序仿真的延时情况: 图1.6 时序仿真的延时情况 (5)封装元件: 图1.7 元件封装图 2. 利用半加器构成一位全加器,建立电路并仿真,并将元件封装。 (1)全加器原理图如图: 图2.1 全加器原理图

海大-EDA实验1参考答案

Laboratory Exercise 1 Switches, Lights, and Multiplexers ED实验参与答案 Part1 library ieee; use ieee.std_logic_1164.all; entity part1 is port(SW:in std_logic_vector(17 downto 0); LEDR:out std_logic_vector(17 downto 0)); end part1; architecture Behavior of part1 is begin LEDR <= SW; end Behavior; part2 library ieee; use ieee.std_logic_1164.all; --a 2 to 1 multiplexer entity entity mux21 is port(in_x, in_y, in_s:in std_logic; out_m:out std_logic); end mux21; --a 2 to 1 multiplexer architecture architecture structural of mux21 is signal u, v:std_logic; begin u <= in_x and (not in_s); v <= in_y and in_s ; out_m <= u or v ; end structural;

--a eight-bit wide 2 to 1 multiplexer library ieee; use ieee.std_logic_1164.all; --eight-bit wide 2 to 1 multiplexer entity entity mux21_8bit is port( SW: in std_logic_vector (17 downto 0); --SW: in std_logic_vector (15 downto 8); --SW: in std_logic_vector (17 downto 17); LEDR: out std_logic_vector (7 downto 0)); end mux21_8bit; --eight-bit wide 2 to 1 multiplexera rchitecture architecture Structural of mux21_8bit is component mux21 port(in_x, in_y, in_s:in std_logic; out_m:out std_logic); end component; begin U1:mux21port map (in_x=>SW(0), in_y=>SW(8), in_s=>SW(17), out_m=>LEDR(0)); U2:mux21port map (in_x=>SW(1), in_y=>SW(9), in_s=>SW(17), out_m=>LEDR(1)); U3:mux21port map (in_x=>SW(2), in_y=>SW(10), in_s=>SW(17), out_m=>LEDR(2)); U4:mux21port map (in_x=>SW(3), in_y=>SW(11), in_s=>SW(17), out_m=>LEDR(3)); U5:mux21port map (in_x=>SW(4), in_y=>SW(12), in_s=>SW(17), out_m=>LEDR(4)); U6:mux21port map (in_x=>SW(5), in_y=>SW(13), in_s=>SW(17), out_m=>LEDR(5)); U7:mux21port map (in_x=>SW(6), in_y=>SW(14), in_s=>SW(17), out_m=>LEDR(6)); U8:mux21port map (in_x=>SW(7), in_y=>SW(15), in_s=>SW(17), out_m=>LEDR(7)); end Structural; part3 library ieee; use ieee.std_logic_1164.all; --a 2 to 1 multiplexer entity entity mux21 is port(in_x, in_y, in_s:in std_logic; out_m:out std_logic);

EDA期末考试题大全

附带: 一.问答题 1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别? ●信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内 或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。 ●信号赋值符号为“<=”变量赋值用“:=”。信号赋值符号用于信号赋值动作,不立即生效。 变量,赋值符号用于变量赋值动作,立即生效。 2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用? ●进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号 间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。 3什么是库、程序包、子程序、过程调用和函数调用? ●库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、 调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。 二.改错题 1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的 信号,请判断下面给出的CASE语句程序片段:

●CASE sel IS ●WHEN“00”=>q<=a; ●WHEN“01”=>q<=b; ●WHEN“10”=>q<=c; ●WHEN“11”=>q<=d; ●END CASE; ●答案:CASE语句缺“WHEN OTHERS”语句。 2.已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段: ●LIBRARY IEEE; ●USE IEEE.STD_LOGIC_1164.ALL; ●ENTITY add IS ● PORT(data_in1, data_in2:IN INTEGER; ● data_out:OUT INTEGER); ●END add; ●ARCHTECTURE add_arch OF add IS ●CONSTANT a:INTEGER<=2; ●BEGIN ●data_out<=( data_in1+ data_in2) * a; ●END addsub_arch; 答案:常量声明时赋初值的“<=”符号应改用“:=”符号。 3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段: ●ARCHITECTURE test_arch OF test IS ●BEGIN ●SIGNAL B:STD_LOGIC; ●Q<= B; END test_arch 答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。 4.已知A和Q均为BIT类型的信号,请判断下面的程序片段: ●ARCHITECTURE archtest OF test IS ●BEGIN ●CASE A IS ●WHEN ‘0’=>Q<=‘1’; ●WHEN ‘1’=>Q<=‘0’; ●END CASE; ●END archtest; 答案:CASE语句应该存在于进程PROCESS内。 三.程序设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

EDA 1位全加器实验报告

南华大学 船山学院 实验报告 (2009 ~2010 学年度第二学期) 课程名称EDA 实验名称1位全加器 姓名学号200994401 专业计算机科学与 班级01 技术 地点8-212 教师

一、实验目的: 熟悉MAX+plus 10.2的VHDL 文本设计流程全过程 二、实验原理图: ain cout cout ain bin sum cin bin sum cin f_adder or2a f e d u3 u2u1b a c co so B co so B h_adder A h_adder A 三、实验代码: (1)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain ,bin ,cin : IN STD_LOGIC; cout ,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder PORT ( a ,b : IN STD_LOGIC; co ,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a ,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT ; SIGNAL d ,e ,f : STD_LOGIC; BEGIN u1 : h_adder PORT MAP(a=>ain ,b=>bin ,co=>d ,so=>e); u2 : h_adder PORT MAP(a=>e , b=>cin , co=>f ,so=>sum); u3 : or2a PORT MAP(a=>d , b=>f , c=>cout);

(完整)EDA试题及答案,推荐文档

2013年电子系统设计考试试题--考试时间21号56节--公共409 一、填空题 1. Verilog的基本设计单元是模块。它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。 2. 用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关。而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。 3.在case语句中至少要有一条default语句. 4. 已知x=4’b1001,y=4’0110,则x的4位补码为4’b1111,而y的4位的补码为4’b0110 . 5. 两个进程之间是并行语句。而在Always中的语句则是顺序语句。 二、简答题 1. 怎样理解在进程语句中,阻塞语句没有延迟这句话? 答:这是因为在进程语句中,有阻塞语句和非阻塞语句这两种,非阻塞语句是有延迟的,而阻塞语句也是有延迟的,这是因为因果系统都有延迟,只是阻塞语句的延迟比非阻塞语句的延迟小于若干个数量级,因此可视为没有延迟。 2.在进程中什么情况下综合为时序电路?什么情况下综合为组合电路? 答:在进程中,只有当敏感信号是边沿触发(即上升沿或下降沿)时,此时综合为时序电路;而在进程中只有当敏感信号是电平沿触发时,此时综合为组合电路。 3.为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不确定的循环? 答:这是因为,在Verilog语言中,它是为电路设计而设计的一门语言,它与高级语言不同,若循环的次数不确定,则会带来不确定的延迟,而这在电路中是不允许存在的,故综合只能支持次数确定的循环,即对于一个具体的芯片,其延迟只是一个定值。 4.Verilog HDL语言进行电路设计方法有哪几种? 答:①自上而下的设计方法(Top-down);②自下而上的设计方法(Bottom-Up) ③综合设计的方法。 5.specparam语句和parameter语句在参数说明方面不同之处是什么? 答:1.specparam语句只能在延时的格式说明块(specify)中出现,而parameter语句则不能再延时说明块内出现。 2.由specparam语句进行定义的参数只能是延时参数,而由parameter语句定义的参数可以是任何数据类型的参数。 3.由specparam语句定义的延时参数只能在延时说明块内使用,而由parameter语句定义的参数则可以在模块内(该parameter语句之后)的任何位置说明。 三、选择题: 1、下列标示符哪些是合法的(B) A、$time B、_date C、8sum D、mux# 2、如果线网类型变量说明后未赋值,起缺省值是(D) A、x B、1 C、0 D、z 3、现网中的值被解释为无符号数。在连续赋值语句中,assign addr[3:0]=-3;addr被赋予的值是(A) A、4’b1101 B、4’b0011 C、4’bxx11 D、4’bzz11 4、reg[7:0] mema[255:0]正确的赋值是(A) A、mema[5]=3’ d0, B、8’ d0; C、1’ b1; D、mema[5][3:0]=4’ d1 5、在code模块中参数定义如下,请问top模块中d1模块delay1、delay2的值是( D) module code(x,y); module top; paramee delay1=1,delay2=1; …………….

EDA设计实验报告

摘要 通过实验学习和训练,掌握基于计算机和信息技术的电路系统设计和仿真方法。要求: 1. 熟悉multisim软件的使用,包括电路图编辑、虚拟仪器仪表的使用和掌握常见电路分析 方法。2. 能够运用multisim软件对模拟电路进行设计和性能分析,掌握eda设计的基本方 法和步骤。multisim常用分析方法:直流工作点分析、直流扫描分析、交流分析。掌握设计 电路参数的方法。复习巩固单级放大电路的工作原理,掌握静态工作点的选择对电路的影响。 了解负反馈对两级放大电路的影响,掌握阶梯波的产生原理及产生过程。 关键字:电路仿真 multisim 负反馈阶梯波 目次 实验一 (1) 实验二............................................................................................. 11 实验三 (17) 实验一单级放大电路的设计与仿真 一、实验目的 1. 设计一个分压偏置的单管电压放大电路,要求信号源频率5khz(峰值10mv) , 负载电阻5.1kω,电压增益大于50。 2. 调节电路静态工作点(调节电位计),观察电路出现饱和失真和截止失真的输出 信号波形,并测试对应的静态工作点值。 3. 调节电路静态工作点(调节电位计),使电路输出信号不失真,并且幅度尽可能 大。在此状态下测试: ①电路静态工作点值; ②三极管的输入、输出特性曲线和? 、 rbe 、rce值;③电路的输入电阻、输出电 阻和电压增益;④电路的频率响应曲线和fl、fh值。 二、实验要求 1. 给出单级放大电路原理图。 2. 给出电路饱和失真、截止失真和不失真且信号幅度尽可能大时的输出信号波形 图,并给出三种状态下电路静态工作点值。 3. 给出测试三极管输入、输出特性曲线和? 、 rbe 、rce值的实验图,并给出 测试结果。 4. 给出正常放大时测量输入电阻、输出电阻和电压增益的实验图,给出测试结果 并和理论计算值进行比较。 5. 给出电路的幅频和相频特性曲线,并给出电路的fl、fh值。 6. 分析实验结果。 三、实验步骤 实验原理图: 饱和失真时波形: 此时静态工作点为: 所以,i(bq)=4.76685ua i(cq)=958.06700ua u(beq)=0.62676v u(ceq)=0.31402v 截止失真时波形: 此时静态工作点为: 所以,i(bq)=2.07543ua i(cq)=440.85400ua u(beq)=0.60519v u(ceq)=5.54322v 最大不失真时波形:篇二:eda课程设计实验报告电子电工实习 华北电力大学

EDA技术与VHDL基础课后复习题答案

《EDA技术与VHDL基础》 课后习题答案 第一章 EDA技术概述 一、填空题 1、电子设计自动化 2、非常高速集成芯片硬件描述语言 3、CAD、CAE、EDA 4、原理图输入、状态图输入、文本输入 5、VHDL、Verilog HDL 6、硬件特性 二、选择题 1、A 2、C 3、A 4、D 5、C 6、D 7、A 第二章可编程逻辑器件基础 一、填空题 1、PLD 2、Altera公司、Xilinx公司、Lattice公司 3、基于反熔丝编程的 FPGA 4、配置芯片 二、选择题 1、D 2、C 3、C 4、D 第三章 VHDL程序初步——程序结构 一、填空题 1、结构、行为、功能、接口 2、库和程序包、实体、结构体、配置 3、实体名、类型表、端口表、实体说明部分

4、结构体说明语句、功能语句 5、端口的大小、实体中子元件的数目、实体的定时特性 6、设计库 7、元件、函数 8、进程PROCESS、过程PROCEDURE 9、顺序语句、并行语句 二、选择题 1、D 2、C 3、C 4、B 5、D 6、B 7、A 8、C 三、简答题 2、 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nand_3in IS PORT(a,b,c:IN STD_LOGIC; y:OUT STD_LOGIC); END; ARCHITECTURE bhv OF nand_3in IS BEGIN y<=NOT(a AND b AND c); END bhv; 5、0000 6、11110111(247) 第四章 VHDL基础 一、填空题 1、顺序语句、并行语句 2、跳出本次循环 3、等待、信号发生变化时 4、函数、过程 5、值类属性、函数类属性、信号类属性、数据类型类属性、数据范围类属性 6、程序调试、时序仿真 7、子程序、子程序 二、选择题

EDA考试题目+答案

简答: 1.VHDL中变量与信号的主要区别 一、变量是一个局部量,只能在进程和子程序,无延时,立即发生,主要作用是在进程中作为临时的数据存储单元。 从VHDL语句功能和行为仿真来看,信号与变量的差异主要表现在接受信息的方式和信息保持与传递的区域大小上。 (1)如:信号可以设置传输延迟量,而变量则不能; (2)如:信号可作为模块间的信息载体,如在结构体中个进程间传递信息;变量只能作为局部的信息载体,如只能在所定义的进程中有效。 (3) 变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都是靠信号来完成综合后的信号将对应更多的硬件结构。 2.ASIC、FPGA、EDA、ISP的含义 ASIC:专用集成电路FPGA:可编程逻辑器件EDA:电子设计自动化ISP:因特网服务提供商 3.常用的库的名称(IEEE STD WORK VITAL) 5.进程语句的特点 (1)进程与进程,或其它并行语句之间的并行性,体现硬件电路并行运行特征。 (2)进程内部的顺序语句具有顺序与并行双重性。顺序行为体现硬件的逻辑功能,并行行为体现硬件特征。 进程内部使用顺序语句,对一个系统进行算法、行为和逻辑功能进行描述,可以具有高抽象性的特点,可以与具体的硬件没有关联。 这种顺序仅是指语句执行上的顺序(针对于HDL的行为仿真),并不意味着PROCESS语句在综合后所对应的硬件逻辑行为也同样具有顺序性。

VHDL程序无法进行诸如软件语言那样的“单步”调试,因为整个程序是一个整体,不能割裂每一句,只能通过仿真波形来了解程序的问题。 (3)进程有启动与挂起两种状态。 (4)进程与进程,或其它并行语句之间通过信号交流。 (5)时序电路必须由进程中的顺序语句描述,而此顺序语句必须由不完整的条件语句构成。推荐在一个进程中只描述针对同一时钟的同步时序逻辑,而异步时序逻辑或多时钟逻辑必须由多个进程来表达。 6.实体定义时端口方向OUT与BUFFER有何不同? OUT:输出端口。定义的通道为单向输出(写)模式,即通过此端口只能将实体内的数据流向外部。 BUFFER:缓冲端口。其功能与INOUT类似,区别在于当需要输入数据时,只允许内部回读输出的信号,即允许反馈。 如:在计数器的设计中,将计数器输出的计数信号回读,作为下一次计数的初值。 与OUT模式相比,BUFFER回读信号不是由外部输入的,而是由内部产生、向外输出信号。 即OUT结构体内部不能再使用,BUFFER结构体内部可再使用。

EDA课程设计----八位二进制全加器

EDA设计说明书 课程名称:EDA技术实用教程 设计题目:八位二进制全加器 院系:电子信息与电气工程学院学生姓名: 学号: 专业班级: 指导教师:李响 2011 年6 月1

1. 设计目的 熟悉利用QuartusⅡ的原理图输入法设计简单的组合电路,掌握层次化设计的方法,并通过一个八位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。 2. 设计原理 2.1 一位全加器的原理 一位全加器可以用两个半加器及一个或门连接而成,因此需要首先完成半加器的设计。在本设计中,将采用原理图输入法来完成设计。 一位全加器的设计步骤: ①为本项工程设计建立文件夹; ②输入设计项目和存盘; ③将设计项目设计成可调用的元件; ④设计全加器顶层文件; ⑤将设计项日设置成工程和时序仿真。 2.2 八位全加器的原理 一个八位全加器可以由八个一位全加器构成,加法器之间的进位可以用串行方式实现,即将低位加法器的进位输出cout 与相邻的高位加法器的最低进位输入信号cin 相接。 3. 设计方案与仿真 3.1 一位全加器的设计与仿真 全加器的实现是以半加器的实现为基础的,因此,要设计全加器应首先设计一个一位的半加器。半加器的实现方案为: ①为此项工程建立文件夹; ②在基本元件库中,选中需要的元件,将元件(包含元件and2、not 、xnor 和输 入输出引脚input、output)调入原理图编辑窗口中;

③将己设计好的原理图文件存盘; ④将所设计的半加器设置成可调用的元件。 用原理图输入法所设计的半加器原理图如图3-1所示,利用QuartusⅡ软件平台,根据图3-1所示电路,可生成一个半加器元件符号,如图3-2所示。在半加器的基础上,为了建立全加器的顶层文件,必须再打开一个原理图编辑窗口,方法同上。其中,所选择的元件包含半加器、或门和输入输出引脚,由此可得到如图3-3所示的全加器原理图;进而可生成个全加器元件符号,如图3-4所示。 图3-1 半加器原理图图3-2 半加器元件符号 图3-3 全加器原理图图3-4 全加器元件符号按照一位全加器原理图连接电路,通过编译、仿真所得的波形图如图3-5所示: 图3-5 一位全加器时序仿真波形 根据图3-5可知,当输入信号ain 、bin 、cin 全是低电平时,输出信号sum 和cout 全是低电平;当输入信号ain 、bin 、cin 中有且只有一个为高电平时,输出信号sum 为高电平,输出信号cout 为低电平;当输入信号ain 、bin 、cin 中有两个为

eda实验课后习题答案

1.功能仿真和时序仿真有何不同?为什么? 答:EDA 中功能仿真是纯理论的仿真,功能仿真不考虑信号传送 过程中的延迟。仿真结果可以和我们的真值表对应起来。而时序仿真则要考虑信号传送过程中的延迟,有可能出现竞争冒险等。时序仿真比较接近实际。由图(2)(3)中可知时序仿真中的波形有一小段时间比功能仿真中的波形多了一个BCD码--13。因为功能仿真只是考虑元件的理想功能,而时序仿真考虑到实际元器件的信号延时、输入/输出时间的延时、触发器的建立/保持时间、寄存器的性能等等 1,什么是同步清零和异步清零? 同步清零就是把清零信号和时钟信号与或者与非处理后输入到清零端,异步清零的清零信号直接输入到清零端。 同步清零可以保证状态在时钟的有效期内不会改变。就是说,同步清零要与时钟同步触发,而异步清零就不关心时钟上升沿是否到来。 2,BCD计数器和一般二进制计数器有何差别? 用4位二进制数来表示1位十进制数中的0~9这10个数码,简称BCD码。称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。 由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。 二进制计数器是数字系统中用得较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。 计数器的种类很多。按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器和非二进制计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器 3. 键盘为什么要防抖动?如何防抖动? 主要目的是为了提高按键输入可靠性,由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰。按键的抖动会造成按一次键产生的开关状态被CPU 误读几次。为了使CPU 能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动。去抖动的方法有硬件方法和软件方法两种。硬件方法是设计一个滤波延时电路或单稳态电路等硬件电路来避开按键的抖动时间。软件方法是指编制一段时间在5 - 10ms 的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。 1、所设计的频率计有测量误差吗?误差是多少?如何减少误差? 答:有误差;一个周期;减少误差的方法是进行多次测量再取平均值或把待 测信号先多次移相测量再取平均值。 2、为什么需要锁存器?锁存器锁存信号应在什么时刻锁存?为什么? 锁存器的作用是锁存计数器的计数结果,锁存信号Load上升沿有效,当控制模块的load 信号有效时,锁存器立即锁存计数器记录的频率值,送到译码器译码,然后送到数码管显示。锁存器输出端的状态不会随输入端的状态变化而变化,只有在有锁存信号时输入的状态被保

eda实验报告

一位全加器 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity adder is port(a,b,cin:in std_logic; co,so:out std_logic); end adder; architecture Behavioral of adder is signal temp1,temp2:std_logic; begin temp1<= a xor b; temp2<= temp1 and cin; so<= temp1 xor cin; co<= temp2 OR (a AND b); end Behavioral; 四位全加器 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity counter10 is

EDA技术及应用+朱正伟课后习题答案

1.试说明实体端口模式BUFFER和INOUT的不同之处? 2.VHDL的数据对象有哪几种?它们之间有什么不同? 3.说明下列各定义的意义: SIGNAL a , b , c : BIT : =’0’; CONST ANT TIME1 , TIME2 : TIME : 20ns ; V ARIABLE x , y , z : STD_LOGIC :=’x’; 4.什么是重载函数?重载运算符有何用处?如何调用重载运算符函数? 5.数据类型BIT \ INTEGER \ BOOLEAN分别定义在哪个库中?哪些库和程序包总是可见的? 6.函数和过程有什么区别? 7.若在进程中加入WAIT语句,应注意哪几个方面的问题? 8.哪些情况下需用到程序包STD_LOGIC_UNSIGNED?试举一例。 9.为什么说一条并行赋值语句可以等效为一个进程?如果是这样的话,怎样实现敏感信号的检测? 10.比较CASE语句和WITH_SELECT语句,叙述它们的异同点? 11.将以下程序段转换为WHEN_ELSE语句: PROCESS (a , b ,c ,d) BEGIN IF a=’0’AND b=’1’THEN NEXT1 <="1101"; ELSEIF a=’0’THEN NEXT1 <=d; ELSEIF b=’1’THEN NEXT1 <=c; ELSE NEXT1 <="1011"; END IF; END PROCESS; 12.试用并行信号赋值语句分别描述下列器件的功能:

(1)3-8译码器 (2) 8选1数据选择器 13.利用生成语句描述一个由几个一位全加器构成n位加法器(n的默认值为4)。 14.用VHDL设计输出占空比为50%的1000分频器。 1.答:BUFFER端口:缓冲模式,具有读功能的输出模式,即信号输出到实体外部,但同时也在内部反馈使用,不允许作为双向端口使用。而INOUT端口:双向模式,即信号的流通是双向的,既可以对此端口赋值,也可以通过此端口读入数据。 2.答:VHDL的数据对象有三种:信号、变量、常量。它们之间的的区别如下: 信号赋值至少有δ延时,而变量和常量没有;信号除当前值外,有许多相关信息,变量只有当前值,常量的值在设计实体中始终不变;进程对信号敏感而对变量及常量不敏感;信号可以是多个进程的全局信号,变量只在定义它们的顺序域可见,而常量的使用范围取决于它被定义的位置;信号是硬件连线的抽象描述信号赋值,赋值符号<= 而变量和常量的赋值符号:=。 3.答:○1定义3个位数据类型的信号a、b、c,它们取值为0; ○2定义2个时间数据类型的常量TIME1、TIME2,它们值为20ns; ○3定义3个标准逻辑位STD_LOGIC数据类型的变量x、y、z,它们的值是强未知的。 4.答:为了方便各种不同数据类型间的运算,VHDL允许用户对原有的基本操作符重新定义,赋予新的含义和功能,从而建立一种新的操作符,这就是重载操作符,定

相关主题
文本预览
相关文档 最新文档