EDA考试所有程序参考

EDA考试所有程序参考
EDA考试所有程序参考

1.Generic decoder.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic( n:integer :=8);

port(sel:in integer range 0 to n-1;

ena:in std_logic;

x:out std_logic_vector(n-1 downto 0)); end s;

architecture s of s is

begin

process(ena,sel)

variable t2:std_logic_vector(x'high downto 0);

begin

t2:=(others=>'1');

if(ena='1') then

t2(sel):='0';

end if;

x<=t2;

end process;

end s;

2.Generic parity detector.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic( n:integer :=8);

port(input:in std_logic_vector(n downto 0);

output:out std_logic);

end s;

architecture s of s is

begin

process(input)

variable t:std_logic;

begin

t:='0';

for i in input'range loop

t:=t xor input(i);

end loop;

output<=t;

end process;

end s;

3.Generic parity generator

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic( n:integer :=8);

port(input:in std_logic_vector(n-1 downto 0);

output:out std_logic_vector(n downto 0)); end s;

architecture s of s is

begin

process(input)

variable t:std_logic;

variable t1:std_logic_vector(output'high downto 0);

begin

t:='0';

for i in input'range loop

t:=t xor input(i);

t1:=t&input;

end loop;

output<=t1;

end process;

end s ;

4 .Simple multiplexer.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(a,b,c,d:in std_logic;

s:in std_logic_vector(1 downto 0);

y:out std_logic);

end s;

architecture s of s is

begin

with s select

y<=a when "00",

b when "01",

c when "10",

d when others;

end s;

5.带q和qbar的DFF.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(d,clk:in std_logic;

q:buffer std_logic;

qbar:out std_logic);

end s ;

architecture s of s iS

begin

process(clk)

begin

if(clk'event and clk='1') then

q<=d;

end if;

end process;

qbar<=not q;

end s;

6.Tri-state buffer.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(input:IN std_logic_vector(7 downto 0);

ena:IN std_logic;

output:out std_logic_vector(7 downto 0)); end s;

architecture s of s is

begin

output<=input when(ena='0') else

"ZZZZZZZZ";

end s;

7.Adder.

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity s is

port(cint:in std_logic;

a,b:in unsigned(7 downto 0);

cout:out std_logic;

sum:out unsigned(7 downto 0));

end s;

architecture s of s is

signal la,lb,ls,lc:unsigned(8 downto 0);

begin

la<='0'&a;

lb<='0'&b;

lc<="00000000"&cint;

ls<=la+lb+lc;

sum<=ls(7 downto 0);

cout<=ls(8);

end s;

8.有符号,无符号数加法器减法器

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_arith.all;

Entity s is

port(a,b:in unsigned(7 downto 0);

cin:in std_logic;

sel:in std_logic_vector(1 downto 0);

sum:out std_logic_vector(7 downto 0);

cout: out std_logic);

End s;

architecture cp of s is

signal t1,t2:unsigned(8 downto 0);

signal t3,t4:signed(8 downto 0);

signal s1,s2:unsigned(8 downto 0);

signal s3,s4:signed(8 downto 0);

signal cin0:unsigned(1 downto 0);

signal cin1:signed(1 downto 0); type tt is array(0 to 3)of std_logic_vector(8 downto 0); signal t:tt;

begin

t1<='0' & a;

t2<='0' & b;

t3<='0' & conv_signed(a,8);

t4<='0' & conv_signed(b,8);

cin0<="11" when cin='1' else "00";

cin1<="11" when cin='1' else "00";

s1<=t1+t2+cin0(0);

s2<=t1-t2-cin0(1);

s3<=t3+t4+cin1(0);

s4<=t3-t4-cin1(1);

t(0)<=conv_std_logic_vector(s1,9);

t(1)<=conv_std_logic_vector(s2,9);

t(2)<=conv_std_logic_vector(s3,9);

t(3)<=conv_std_logic_vector(s4,9);

sum<=t(0)(7 downto 0) when sel="00" else

t(2)(7 downto 0) when sel="01" else

t(1)(7 downto 0) when sel="10" else

t(2)(7 downto 0) when sel="11" ;

cout<=t(0)(8) when sel="00" else

t(2)(8) when sel="01" else

t(1)(8) when sel="10" else

t(2)(8) when sel="11" ;

end cp;

9.Binary-to-Gray code converter.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic (n: integer:=4);

port(input:in std_logic_vector(n-1 downto 0);

output:out std_logic_vector(n-1 downto 0));

end s;

architecture s of s is

begin

output(n-1)<=input(n-1);

output(n-2 downto 0)<=input(n-1 downto 1)xor input(n-2 downto 0);

end s ;

https://www.360docs.net/doc/3116614916.html,parator.

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity s is

port(a,b:in unsigned(7 downto 0);

sel:in std_logic;

x1,x2,x3: out std_logic);

end s;

architecture s of s is

signal a_signed,b_signed:signed(7 downto 0);

signal t:std_logic_vector(1 to 6);

begin

a_signed<=conv_signed(a,8);

b_signed<=conv_signed(b,8);

t(1)<='1' when a>b else '0';

t(2)<='1' when a=b else '0';

t(3)<='1' when a

t(4)<='1' when a_signed>b_signed else '0';

t(5)<='1' when a_signed=b_signed else '0';

t(6)<='1' when a_signed

x1<=t(1) when sel='0' else t(4);

x2<=t(2) when sel='0' else t(5);

x3<=t(3) when sel='0' else t(6);

end s;

11.One-digit counter

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity s is

port(clk,rst:in std_logic;

digit:out std_logic_vector(6 downto 0)); end s;

architecture s of s is

begin

process(clk)

variable t :integer range 0 to 10;

begin

if(rst='1') then

t:=0;

else

if(clk'event and clk='1') then

t:=t+1;

if(t>=10) then

t:=0;

end if;

end if;

end if;

case t is

when 0=>digit<="1111110";

when 1=>digit<="0110000";

when 2=>digit<="1101101";

when 3=>digit<="1111001";

when 4=>digit<="0110011";

when 5=>digit<="1011011";

when 6=>digit<="1011111";

when 7=>digit<="1110000";

when 8=>digit<="1111111";

when 9=>digit<="1111011";

when others=>null;

end case;

end process; end s;

12.Two-digit counter with SSD output.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(clk,rst:in std_logic;

digit1,digit2:out std_logic_vector(6 downto 0)); end s ;

architecture s of s is

begin

process(clk)

variable t1,t2 :integer range 0 to 10;

begin

if(rst='1') then

t1:=0;t1:=0;

else

if(clk'event and clk='1') then

t1:=t1+1;

if(t1=10) then

t1:=0;

t2:=t2+1;

if(t2=10) then

t2:=0;

end if ;

end if;

end if;

end if;

case t1 is

when 0=>digit1<="1111110";

when 1=>digit1<="0110000";

when 2=>digit1<="1101101";

when 3=>digit1<="1111001";

when 4=>digit1<="0110011";

when 5=>digit1<="1011011";

when 6=>digit1<="1011111";

when 7=>digit1<="1110000";

when 8=>digit1<="1111111";

when 9=>digit1<="1111011";

when others=>null;

end case;

case t2 is

when 0=>digit2<="1111110";

when 1=>digit2<="0110000";

when 2=>digit2<="1101101";

when 3=>digit2<="1111001";

when 4=>digit2<="0110011";

when 5=>digit2<="1011011";

when 6=>digit2<="1011111";

when 7=>digit2<="1110000";

when 8=>digit2<="1111111";

when 9=>digit2<="1111011";

when others=>null;

end case;

end process;

end s;

13.Shift register.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic(n:integer:=4);

port(rst,clk,d:in std_logic;

q: out std_logic);

end s;

architecture s of s is

begin

process(clk)

variable t:std_logic_vector(n-1 downto 0);

begin

if(rst='1') then

t:=(others=>'0');

else

if(clk'event and clk='1') then

t:=d&t(n-1 downto 1);

end if ;

end if;

q<=t(0);

end process;

end s;

14.Simple barrel shifter.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic(n: integer:=8);

port(input:in std_logic_vector(n-1 downto 0);

shift:in integer range 0 to 1;

output:out std_logic_vector(n-1 downto 0)); end s ;

architecture s of s is

begin

process(shift,input)

begin

if(shift=0) then

output<=input;

else

output(0)<='0';

for i in 1 to input'high loop

output(i)<=input(i-1);

end loop;

end if;

end process;

end s; 15. Leading zeros.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(data:in std_logic_vector(6 downto 1);

zeros:out integer range 0 to 6);

end s;

architecture s of s is

begin

process(data)

variable t:integer range 0 to 6;

begin

t:=0;

for i in data'range loop

case data(i) is

when '0'=>t:=t+1;

when others=>exit;

end case;

end loop;

zeros<=t;

end process;

end s;

16.Count ones.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(data:in std_logic_vector(8 downto 1);

ones:out integer range 0 to 8);

end s;

architecture s of s is

begin

process(data)

variable t:integer range 0 to 8;

begin

t:=0;

for i in data'range loop

if(data(i)='1') then

t:=t+1;

end if;

end loop;

ones<=t;

end process;

end s;

17.Event counter.

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity s is

port(clk:in std_logic;

opt:out std_logic_vector(3 downto 0)); end s;

architecture s of s is

signal t1,t2:std_logic_vector(3 downto 0);

begin

process(clk)

begin

if(clk'event and clk='1') then

t1<=t1+1;

if(t1>"1000") then

t1<="0000";

end if ;

end if;

end process;

process(clk)

begin

if(clk'event and clk='0') then

t2<=t2+1;

if(t2>"0111") then

t2<="0000";

end if ;

end if;

end process;

opt<=t1+t2;

end s;

18.Priority encoder.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic(n:integer:=3);

port(x:in std_logic_vector(2**3-1 downto 0);

y:out std_logic_vector(n-1 downto 0)); end s;

architecture s of s is

begin

process(x)

begin

if(x(7)='1') then

y<="111";

elsif(x(6)='1') then

y<="110";

elsif(x(5)='1') then

y<="101";

elsif(x(4)='1') then

y<="100";

elsif(x(3)='1') then

y<="011";

elsif(x(2)='1') then

y<="010";

elsif(x(1)='1') then

y<="001";

else

y<="000"; end if;

end process;

end s;

19.Generic frequency divider.

library ieee;

use ieee.std_logic_1164.all;

entity s is

generic(n:integer:=6);

port(clk:in std_logic;

q:buffer std_logic);

end s ;

architecture s of s is

begin

process(clk)

variable t:integer range 0 to 255;

begin

if(clk'event and clk='1') then

t:=t+1;

if(t=n/2) then

q<=not q;

t:=0;

end if;

end if;

end process;

end s;

20.Signal generator.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(clk:in std_logic;

wave:out std_logic);

end s;

architecture s of s is

type states is(zero,one,two,three,four,five,six,seven); signal pr_state,nx_state:states;

signal temp:std_logic;

begin

process(clk)

begin

if(clk'event and clk='1') then

pr_state<=nx_state;

wave<=temp;

end if;

end process;

process(pr_state)

begin

case pr_state is

when zero=>temp<='0';nx_state<=one;

when one=>temp<='1';nx_state<=two;

when two=>temp<='0';nx_state<=three;

when three=>temp<='1';nx_state<=four;

when four=>temp<='1';nx_state<=five;

when five=>temp<='1';nx_state<=six;

when six=>temp<='0';nx_state<=seven;

when seven=>temp<='0';nx_state<=zero;

when others=>null;

end case;

end process;

end s;

21.Pulse-sequence detector

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(d,clk,rst:in bit;

q:out bit);

end s;

architecture s of s is

type states is (one,two,three,four);

signal pr_state,nx_state:states;

begin

process(rst,clk)

begin

if(rst='1') then

pr_state<=one;

elsif(clk'event and clk='1') then

pr_state<=nx_state;

end if;

end process;

process(d,pr_state)

begin

case pr_state is

when one=>

q<='0';

if(d='1') then

nx_state<=two;

else nx_state<=one;

end if;

when two=>

q<='0';

if(d='1') then

nx_state<=three;

else nx_state<=one;

end if;

when three=>

q<='0';

if(d='1') then

nx_state<=four;

else nx_state<=one;

end if;

when four=>

q<='1';

if(d='1') then

nx_state<=four;

else nx_state<=one;

end if;

end case;

end process;

end s;

22.Parallel/serial converter

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(d:in std_logic_vector(7 downto 0);

load,clk:in std_logic;

dout:out std_logic);

end s;

architecture s of s is

signal t:std_logic_vector(7 downto 0); begin

process(clk)

begin

if(clk'event and clk='1') then

if(load='1') then t<=d;

else

t<=t(6 downto 0)&'0';

end if;

end if;

end process;

dout<=t(7);

end s;

24.Serial data receiver.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(din,clk,rst:in bit;

data:out bit_vector(6 downto 0);

err,data_valid:out bit);

end s;

architecture s of s is

begin

process(clk,rst)

variable reg:bit_vector(10 downto 0); variable count:integer range 0 to 10; variable temp:bit;

begin

if(rst='1') then

count:=0;

reg:=(reg'range=>'0');

temp:='0';

err<='0';

data_valid<='0';

elsif(clk'event and clk='1') then

if(reg(0)='0' and din='1') then

reg(0):='1';

elsif(reg(0)='1') then

count:=count+1;

if(count<10) then

reg(count):=din;

elsif(count=10) then

temp:=(reg(1) xor reg(2) xor reg(3) xor reg(4) xor reg(5) xor reg(6) xor reg(7) xor reg(8))or not reg(9) ;

err<=temp;

count:=0;

reg(0):=din;

if(temp='0') then

data_valid<='1';

data<=reg(7 downto 1);

end if;

end if;

end if;

end if;

end process;

end s;

25.Signal generater.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(clk,rst:in std_logic;

out1,out2:out std_logic);

end s;

architecture s of s is

type state1 is (zero,one,two,three);

type state2 is (zero,one,two,three);

signal pr_state1,nx_state1:state1;

signal pr_state2,nx_state2:state2;

begin

process(clk,rst)

begin

if(rst='1') then

pr_state1<=zero;

elsif(clk'event and clk='1') then

pr_state1<=nx_state1;

end if;

end process;

process(pr_state1)

begin

case pr_state1 is

when zero=>

out1<='1';

nx_state1<=one;

when one=>

out1<='0';

nx_state1<=two;

when two=>

out1<='0';

nx_state1<=three;

when three=>

out1<='0';

nx_state1<=zero;

end case;

end process;

process(clk,rst)

begin

if(rst='1') then

pr_state2<=zero;

elsif(clk'event and clk='1') then

pr_state2<=nx_state2;

end if;

end process;

process(pr_state2)

begin

case pr_state2 is

when zero=>

out2<='1';

nx_state2<=one;

when one=>

out2<=not clk;

nx_state2<=two;

when two=>

out2<='0';

nx_state2<=three;

when three=>

out2<='0';

nx_state2<=zero;

end case;

end process;

end s;

26.Sequence detector

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(xi,clk:in std_logic;

zo:out std_logic);

end s;

architecture s of s is

type states is(zero,one,two,three,four); signal pr,nx:states;

begin

process(clk)

begin

if(clk'event and clk='1') then

pr<=nx;

end if;

end process;

process(pr,xi)

begin

case pr is

when zero =>

zo<='0';

if(xi='0') then

nx<=zero;

else nx<=one;

end if;

when one =>

zo<='0';

if(xi='0') then

nx<=two;

else nx<=one;

end if;

when two =>

zo<='0';

if(xi='0') then

nx<=zero;

else nx<=three;

end if;

when three=>

zo<='0';

if(xi='0') then

nx<=two;

else nx<=four;

end if;

when four =>

zo<='1';

if(xi='0') then

nx<=two;

else nx<=one;

end if;

end case;

end process;

end s;

27.Parity detector.

library ieee;

use ieee.std_logic_1164.all;

entity s is

port(input:in std_logic_vector(7 downto 0);

output:out std_logic);

end s;

architecture s of s is

begin

process(input)

variable t:std_logic;

begin

t:='0';

for i in input'range loop

t:=t xor input(i);

end loop; output<=t; end process; end s;

EDA期末考试考卷及答案

(A卷) 赣南师范学院 2010—2011学年第一学期期末考试试卷(A卷)(闭卷)年级 2008 专业电子科学与技术(本)课程名称 EDA技术基础 2、学生答题前将密封线外的内容填写清楚,答题不得超出密封线; 3、答题请用蓝、黑钢笔或圆珠笔。 一、单项选择题(30分,每题2分) 1.以下关于适配描述错误的是 B A.适配器的功能是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件 B.适配所选定的目标器件可以不属于原综合器指定的目标器件系列 C.适配完成后可以利用适配所产生的仿真文件作精确的时序仿真 D.通常,EDAL软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由FPGA/CPLD供应商提供 2.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述 D 。 A.器件外部特性B.器件的综合约束 C.器件外部特性与内部功能D.器件的内部功能 3.下列标识符中, B 是不合法的标识符。 A.State0 B.9moon C.Not_Ack_0 D.signall 4.以下工具中属于FPGA/CPLD集成化开发工具的是 D A.ModelSim B.Synplify Pro C.MATLAB D.QuartusII 5.进程中的变量赋值语句,其变量更新是 A 。 A.立即完成B.按顺序完成 C.在进程的最后完成D.都不对 6.以下关于CASE语句描述中错误的是 A A.CASE语句执行中可以不必选中所列条件名的一条 B.除非所有条件句的选择值能完整覆盖CASE语句中表达式的取值,否则最末一个条件句的选择必须加上最后一句“WHEN OTHERS=><顺序语句>” C.CASE语句中的选择值只能出现一次 D.WHEN条件句中的选择值或标识符所代表的值必须在表达式的取值范围 7.以下哪个程序包是数字系统设计中最重要最常用的程序包 B A.STD_LOGIC_ARITH B.STD_LOGIC_1164 C.STD_LOGIC_UNSIGNED D.STD_LOGIC_SIGNED 8.基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入→A →综合→适配→时序仿真→编程下载→硬件测试。 A.功能仿真B.逻辑综合C.配置D.引脚锁定 9.不完整的IF语句,其综合结果可实现 D A.三态控制电路B.条件相或的逻辑电路 C.双向控制电路D.时序逻辑电路 10.下列语句中,属于并行语句的是A A.进程语句B.IF语句C.CASE语句D.FOR语句11.综合是EDA设计流程的关键步骤,综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;在下面对综合的描述中, C 是错误的。 A.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件 B.综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系不是唯一的 C.综合是纯软件的转换过程,与器件硬件结构无关 D.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束 12.CPLD的可编程是主要基于什么结构 D 。 A.查找表(LUT)B.ROM可编程 C.PAL可编程D.与或阵列可编程 13.以下器件中属于Altera 公司生产的是 B A.ispLSI系列器件B.MAX系列器件 C.XC9500系列器件D.Virtex系列器件 14.在VHDL语言中,下列对时钟边沿检测描述中,错误的是 D A.if clk'event and clk = '1' then B.if clk'stable and not clk = '1' then C.if rising_edge(clk) then D.if not clk'stable and clk = '1' then 15.以下关于状态机的描述中正确的是 B A.Moore型状态机其输出是当前状态和所有输入的函数 B.与Moore型状态机相比,Mealy型的输出变化要领先一个时钟周期C.Mealy型状态机其输出是当前状态的函数

最常用的几种EDA软件

常用的几种EDA软件 EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。 EDA常用软件 EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:EWB、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIlogic、Cadence、MicroSim 等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同时以可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。下面按主要功能或主要应用场合,分为电路设计与仿真工具、PCB设计软件、IC设计软件、PLD 设计工具及其它EDA软件,进行简单介绍。 1、电子电路设计与仿真工具 电子电路设计与仿真工具包括SPICE/PSPICE;EWB;Matlab;SystemView;MMICAD等。下面简单介绍前三个软件。 (1)SPICE(Simulation Program with Integrated Circuit Emphasis) 是由美国加州大学推出的电路分析仿真软件,是20世纪80年代世界上应用最广的电路设计软件,1998年被定为美国国家标准。1984年,美国MicroSim公司推出了基于SPICE 的微机版PSPICE(Personal—SPICE)。现在用得较多的是PSPICE6.2,可以说在同类产品中,它是功能最为强大的模拟和数字电路混合仿真EDA软件,在国内普遍使用。最新推出了PSPICE9.1版本。它可以进行各种各样的电路仿真、激励建立、温度与噪声分析、模拟控制、波形输出、数据输出、并在同一窗口内同时显示模拟与数字的仿真结果。无论对哪种器件哪些电路进行仿真,都可以得到精确的仿真结果,并可以自行建立元器件及元器件库。 (2)EWB(Electronic Workbench)软件 是Interactive ImageTechnologies Ltd 在20世纪90年代初推出的电路仿真软件。目前普遍使用的是EWB5.2,相对于其它EDA软件,它是较小巧的软件(只有16M)。但它对模数电路的混合仿真功能却十分强大,几乎100%地仿真出真实电路的结果,并且它在桌面上提供了万用表、示波器、信号发生器、扫频仪、逻辑分析仪、数字信号发生器、逻辑转换器和电压表、电流表等仪器仪表。它的界面直观,易学易用。它的很多功能模仿了SPICE 的设计,但分析功能比PSPICE稍少一些。 (3)文字MATLAB产品族 它们的一大特性是有众多的面向具体应用的工具箱和仿真块,包含了完整的函数集用来对图像信号处理、控制系统设计、神经网络等特殊应用进行分析和设计。它具有数据采集、报告生成和MATLAB语言编程产生独立C/C++代码等功能。MATLAB产品族具有下列功能:数据分析;数值和符号计算;工程与科学绘图;控制系统设计;数字图像信号处理;财务工程;建模、仿真、原型开发;应用开发;图形用户界面设计等。MATLAB产品族被广泛地应用于

(完整版)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等硬件描述

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.请画出下段程序的真值表,并说明该电路的功能。 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY aaa IS PORT( oe,dir :IN STD_LOGIC ; a,b : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0 ) ; END aaa ; ARCHITECTURE ar OF aaa IS BEGIN PROCESS(oe , dir ) 输入输出 BEGIN a1 a0 x3 x2 x1 x0 IF oe=?0?THEN a<=”zzzzzzzz”; b<=”zzzzzzzz”; 0 0 0 0 0 1 ELSIF oe=?1?THEN 0 1 0 0 1 0 IF dir=?0?THEN b<=a; 1 0 0 1 0 0 ELSIF dir=?1?THEN a<=b; 1 1 1 0 0 0 ENDIF; END IF ; END PROCESS ; END ar ; 功能为:2-4译码器…………………………………………..4分 2.请说明下段程序的功能,写出真值表,并画出输入输出波形。 LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all; ENTITY aaa IS PORT( reset,clk: IN STD_LOGIC; q: BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0) ); END aaa; ARCHITECTURE bd OF aaa IS BEGIN PROCESS(clk,reset) BEGIN IF (reset='0') THEN q<="000"; ELSIF (clk'event AND clk='1') THEN IF (q=5) THEN q<="000"; ELSE q<=q+1; END IF; END IF; END PROCESS; END bd; 功能为:带进位借位的4位加/减法器。…………………………………..3分 输入输出波形图如下:………………………………………………………7分

(完整)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.8位序列信号检测器 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK IS PORT(DIN, CLK, CLR : IN STD_LOGIC; AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SCHK; ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN D <="11100101"; PROCESS( CLK, CLR ) BEGIN IF CLR ='1' THEN Q <= 0 ; ELSIF CLK'EVENT AND CLK='1' THEN CASE Q IS WHEN 0=> IF DIN = D(7) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(6) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(5) THEN Q <= 3 ; ELSE Q <= 0 ; END IF ; WHEN 3=> IF DIN = D(4) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(3) THEN Q <= 5 ; ELSE Q <= 0 ; END IF ; WHEN 5=> IF DIN = D(2) THEN Q <= 6 ; ELSE Q <= 0 ; END IF ; WHEN 6=> IF DIN = D(1) THEN Q <= 7 ; ELSE Q <= 0 ; END IF ; WHEN 7=> IF DIN = D(0) THEN Q <= 8 ; ELSE Q <= 0 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) BEGIN IF Q = 8 THEN AB <="1010"; ELSE AB <="1011"; END IF ; END PROCESS ; END behav ;

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实验程序汇总

实验二组合逻辑电路设计(一)设计一个四舍五入判别电路,其输入为842lBCD码,要求当输入大于或等于5时判别电路输 为l,反之为0。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ZQF IS PORT(A:IN UNSIGNED (3 DOWNTO 0); BCD0,BCD1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEVEN0,SEVEN1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ZQF ; ARCHITECTURE A OF ZQF IS SIGNAL XC:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(A) BEGIN IF A<10 THEN BCD1<="0000"; BCD0<=STD_LOGIC_VECTOR(A); SEVEN1<="0111111"; XC<=STD_LOGIC_VECTOR(A); ELSE BCD1<="0001"; BCD0<=A-10; SEVEN1<="0000110"; XC<=STD_LOGIC_VECTOR(A)-10; END IF; END PROCESS; SEVEN_SEGMENT:BLOCK BEGIN SEVEN0<="0111111" WHEN XC="0000" ELSE "0000110" WHEN XC="0001" ELSE "1011011" WHEN XC="0010" ELSE "1001111" WHEN XC="0011" ELSE "1100110" WHEN XC="0100" ELSE "1101101" WHEN XC="0101" ELSE "1111101" WHEN XC="0110" ELSE "0000111" WHEN XC="0111" ELSE "1111111" WHEN XC="1000" ELSE "1101111" WHEN XC="1001" ELSE "0000000"; END BLOCK SEVEN_SEGMENT;END A; 实验五英语字母显示电路

《EDA》试题B答案

2007 至2008学年度第二学期期末考核 《EDA》试题(开卷) 卷号:B 时间:120 分钟 2008 年6 月 专业:电子信息工程学号:姓名: 一填空题(20分) 1、VHDL 2、DEVICE.LIB SYMBOLS.LIB 3、实际零件焊接到电路板时所指示的外观和焊点的位置 4、电子设计自动化电子CAD技术 5、A L T E R A,X I L I N X 6、WAIT 7、电路连接 8、SRAM-BASE 9、2.54mm 300mil 10、元件外观和元件引线端子的图形 二名词解释(20分) 1 PLD/FPGA PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。 2.过孔 当需要连接两个层面上的铜膜走线时就需要过孔(Via),过孔 又称为贯孔、沉铜孔和金属化孔。 过孔分为穿透式(Through)、半隐藏式(Blind)和隐藏式(Buried) 3.铜膜线 就是连接两个焊盘的导线,称为Track,一般铜膜线走线在不 同层面取不同的走向,例如顶层走水平线,则底层走垂直线。顶 层和底层走线之间的连接采用过孔(Via)连接。 4 PROM、PAL和PLA PROM:与阵列固定,或阵列可编程,一般用作存储器,其输入为存储器的地址,输出为存储器单元的内容。但输入的数目太大时,器件功耗增加,其局限性大。 PLA:与或阵列均可编程,但是其慢速特性和相对PAL、PROM而高得多的价格妨碍了它被广泛使用。PAL:或阵列固定,与阵列可编程,其第二代产品GAL具有了可电擦写、可重复编程、可设置加密的功能。 5 自顶向下的/自下而上的设计方法 自下而上的设计方法,使用该方法进行硬件设计是从选择具体元器件开始,并用这些元器件进行逻辑电路设计,从而完成系统的硬件设计,然后再将各功能模块连接起来,完成整个系统的硬件设计,自顶向下的设计方法就是从系统的总体要求出发,自顶向下分三个层次对系统硬件进行设计。 第一个层次是行为描述第二个层次是数据流描述第三个层次为逻辑综合

EDA 程序 题库

一、设计题1.请用VHDL中的if语句描述一个D触发器(181页) 2.8选1数据选择器,用VHDL写出源程序。其中:D7—D0是数据输入端,S2、S1和S0是控制输入端,Y是数据输出端。当S2、S1、S0=“000”时,D0数据被选中,输出Y=D0;当S2、S1、S0=“001”时,D1数据被选中,输出Y=D1,以次类推。试用CASE语句描述3-8译码器74LS138的逻辑功能说明:(1)输出为低电平有效;(2)74LS138有3个附加控制端G1、G2A和G2B,当G1=1,G2A+G2B=0时,译码器处于工作状态,否则译码器被禁止,所有输出端均被封锁为高电平。 3.用VHDL语言设计一个3—8译码器,管脚如图所示,其中en为使能端,sel(2 downto 0)为输入,y(7 downto 0)是输出,实体为dec,结构体为behave。(P174)

4.用VHDL语言设计一个2—10进制译码器,其中输入a(3 downto 0):4位BCD码,输出y(9 downto 0):10位二进制数,实体名为ym2_10,结构体名为rtl。 5.用元件例化语句设计如图所示电路。元件为2输入与非门YF2,实体名为YF4,结构体名为ab,端口采用如图标称。(152页) 6.题目:用VHDL语言编写十二进制同步计数器。引脚定义: reset复位,en计数控制,clk时钟,q(3 downto 0)计数器输出。

7.采用FOR-LOOP语句设计4(或8位)位奇偶校验逻辑电路的VHDL程序。(参考117,123页,不需要比较功能) 9.四选一数据选择器MUX,其端口定义如下:选择信号输入sel(1 downto 0);数据输入D3—D0;输出cout。当sel=“00”时,D0数据被选中,输出cout=D0;当sel=“01”时,D1数据被选中,输出cout=D1,以次类推。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。(a)用if语句。(b)用case 语句。(c)用when…else…语句。(可参考178页)

EDA(FPGA)期末考试试题

这是长期总结的EDA期末考试试题 试题一 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核具有规范的接口协议,良好的可移植与可测试性,为系统开发提供了可靠的保证。 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提供设计的最终阶段产品:掩模。 3-1 OLMC(输出逻辑宏单元)有何功能?说明GAL是怎样实现可编程组合电路与时序电路的。 P34~36 答:OLMC单元设有多种组态,可配置成专用组合输出、专用输入、组合输出双向口、寄存器输出、寄存器输出双向口等。 说明GAL是怎样实现可编程组合电路与时序电路的? 答:GAL(通用阵列逻辑器件)是通过对其中的OLMC(输出逻辑宏单元)的编程和三种模式配置(寄存器模式、复合模式、简单模式),实现组合电路与时序电路设计的。 3-2 什么是基于乘积项的可编程逻辑结构? P33~34,40 答:GAL、CPLD之类都是基于乘积项的可编程结构;即包含有可编程与阵列和固定的或阵列的PAL(可编程阵列逻辑)器件构成。 3-3 什么是基于查找表的可编程逻辑结构? P40~41 答:FPGA(现场可编程门阵列)是基于查找表的可编程逻辑结构。 3-7 请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的PLD器件归类为CPLD;将基于查找表的可编程逻辑结构的PLD器什归类为FPGA,那么,APEX系列属于什么类型PLD器件? MAX II系列又属于什么类型的PLD器件?为什么? P54~56 答:APEX(Advanced Logic Element Matrix)系列属于FPGA类型PLD器件;编程信息存于SRAM中。MAX II系列属于CPLD类型的PLD器件;编程信息存于EEPROM中。 4-3. 图3-31所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX221 IS PORT(a1,a2,a3:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入信号 s0,s1:IN STD_LOGIC; outy:OUT STD_LOGIC);--输出端 END ENTITY; ARCHITECTURE ONE OF MUX221 IS SIGNAL tmp : STD_LOGIC; BEGIN

EDA考试题

1.原理图元件库编辑器界面主要由元件管理器、主工具栏、菜单、常用工具栏、编辑区组成。编辑区内有一个(十字坐标轴),用户一般在(第四)象限进行元件的编辑工作。2.软件环境要求运行在Windows 98/2000/NT或者(更高版本)操作系统下。硬件环境要求P166CPU/RAM32MB/HD剩余400MB以上,显示分辨率为(1024×768)。 3.ProtelDXP主要由原理图设计模块(Schematic模块),印制电路板设计模块(PCB设计模块),(电路信号仿真)模块和(PLD逻辑器设计)模块组成。 4.元件封装是指实际元件焊接到电路板时所指示的(外观)和焊接位置。元件的封装可以在设计电路原理图时指定,也可以在(引进网络表)时指定。 5.原理图设计窗口顶部为主菜单和主工具栏,左部为设计管理器,右边大部分区域为(编辑区),底部为状态栏和命令栏,中间几个浮动窗口为常用工具。除(主菜单)外,上述各部件均可根据需要打开或关闭。 6.图纸方向:设置图纸是纵向和横向。通常情况下,在(绘图及显示)时设为横向,在(打印)时设为纵向。。 7.原理图设计工具包括画总线、画总线进出点、(放置元件)、放置节点、放置电源、(画导线)、放置网络名称、放置输入/输出点、放置电路方框图、放置电路方框进出点等内容。8.网络表的内容主要是电路图中各(元件)的数据以及元件间(网络连接)的数据。网络表非常重要,在PCB制版图的设计中是必须的。 9.通过原理图元件库编辑器的制作工具来(绘制)和(修改)一个元件图形。 10.自动布线就是用计算机自动连接电路导线。自动布线前按照某些要求预置(布线设计)规则,设置完布线规则后,程序将依据这些规则进行自动布线。自动布线(效率高),速度快。 11.元件列表主要用于中整理一个电路或一个项目文件中的所有文件,它主要包括元件的名称、(标注)、(封装)等内容。 12.实体放置与编辑包括导线、(总线)、(元件)、网络标号、电源与地线、节点、文字与图形的放置与编辑。 13.文件管理,Protel DXP的各菜单主要是进行各种文件命令操作,设置视图的显示方式以及编辑操作。系统包括File,Edit, (View), (Windows)和Help共5个下拉菜单。14.构成PCB图的基本元素有:元件封装、(铜膜导线)、(助焊膜)和阻焊膜、层、焊盘和过孔、丝印层及文字标记。 15.ProtelDXP有32个信号层,即顶层、底层和30个中间层,可得到(16)个内部版层和16个机械板层。在实际的设计过程中,几乎不可能打开所有的工作层,这就需要(用户设置)工作层,将自己需要的工作层打开。 16.工作层的类型包括信号板层(Signal Layers)、内部板层(Internal Planc)、机械板层(Mechanical Layers)、(助焊膜及阻焊膜)、(丝印层)、其它工作层(Other)。17.工作层参数设置包括(栅格)设置和(电气栅格)设置。电气栅格设置主要用于设置电气栅格的属性。 18.元件封装的图形及属性信息都存储在一些特定的(元件封装)文件中。如果没有这个文件库,系统就不能识别用户设置的关于元件封装的信息,所以在绘制印制电路板之前(装入)所用到的元件。 19.网格设置。ProtelDXP提供了(线状网络)和(点状网络)两种不同的网状的网格。20.PCB绘图工具可以绘制导线、放置焊盘、过孔、字符串、位置坐标、(尺寸标注)、(设置相对原点)、放置房间定义,绘制圆弧或圆,放置切分多边形等。 21.手工布线就是用手工连接电路导线。在布线过程中可以切换导线模式、切换导线方向、设置光标移动的最小间隔。对导线还可以进行剪切、复制与粘贴、(删除)及属性修改等

EDA必考程序

配置: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21b IS PORT( a,b:IN STD_LOGIC; s:IN STD_LOGIC; y:OUT STD_LOGIC); END mux21b; ARCHITECTURE mux_arch1 OF mux21b IS BEGIN y <= a WHEN s = '0' ELSE b ; END mux_arch1 ; ARCHITECTURE mux_arch2 OF mux21b IS BEGIN Process(a,b,s) BEGIN IF (s='1') THEN y <= a; ELSE y <= b ; END IF; END Process; END mux_arch2; CONFIGURA TION first OF mux21b IS FOR mux_arch1 END FOR; END first; CONFIGURA TION second OF mux21b IS FOR mux_arch2 END FOR; END second; (3)W AIT UNTIL 条件--条件等待语句 这种形式的W AIT语句使进程暂停,直到预期的条件为真。W AIT UNTIL后面跟的是布尔表达式,在布尔表达式中隐式地建立一个敏感信号量表,当表中任何一个信号量发生变化时,就立即对表达式进行一次测评。如果其结果使表达式返回一个“真”值,则进程脱离挂起状态,继续执行下面的语句。 即W AIT UNTIL语句需满足以下条件: ?在条件表达式中所含的信号发生了变化; ?此信号改变后,且满足W AIT UNTIL语句中表达式的条件。 这两个条件缺一不可,且必须按照上述顺序来完成。 W AIT UNTIL语句有以下三种表达方式: ?W AIT UNTIL 信号= V ALUE; ?W AIT UNTIL RISING_EDGE(信号)= V ALUE;

(完整版)EDA技术考试试题B及详细答案

《EDA技术》第二学期期末试题B 卷号:B 时间:120 分钟2008 年6 月 专业:电子信息工程学号:姓名: 一、填空题(20分,每题2分) 当前ASIC制造商都自己开发了HDL语言,但是都不通用,只有美国国防部开发的()语言成为了IEEE. STD_1076标准,并在全世界得到了承认。 载入protel的Schematic中的()和()可满足一般用户需求,两个零件库中含有二极管、三极管、电阻、电容、电感等常用元件。 零件封装是指()。 EDA技术也称(),是在( )技术的基础上发展起来的计算机软件系统。 目前世界上有十几家生产CPLD/FPGA的公司,最大的三家是:(),( ),LATTIC 。 顺序描述语句中,()在MAX-PLUS中不被支持。 VHDL语句中能被赋予一定值的对象称为客体,主要有常数,信号和变量。其中常数对应代表数字电路中的电源和接地等。信号对应物理设计中的()。 FPGA可分为两大类,分别是SRAM-BASE和Anti-Fuse 设计时一般选用()。100mil=()mm,7.62mm=( )mil。 PCB封装元件实际上就是()。 二、名词解释题(20分,每题4分) 1 PLD/FPGA 2.过孔 3.铜膜线 4 PROM、PAL和PLA 5 自顶向下的/自下而上的设计方法 三、选择题(15分,每题3分) 1.下列常用热键具有在元件浮动状态时,编辑元件属性功能的是() PgUp Tab Space bar Esc 2.Design/Options菜单中下列选项不属于开关选项的是:() A.Snap Grid B.Hidden Pins C.Electrical Grid D.Title block 3.下列不属于VHDL基本程序结构是() A..CONFIGURATION定义区 B..ARCHITECTURE定义区 C.USE定义区 D.ENTITY定义区 4.下列关于VHDL中信号说法不正确的是:()

相关主题