1、谈谈你对EDA技术的理解。(什么是EDA)。 EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。
2.简要解释建模、仿真和综合的含义。 答:建模是指用硬件描述语言描述电路的功能。仿真是指验证电路的功能。综合是指把软件模型转化为硬件电路。
3、EDA技术的主要特征有哪些? 答:自顶向下的设计方法;采用硬件描述语言;高层综合优化;并行工程;开放性和标准化。
4、什么是硬件描述语言? 答:是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的功能、电路结构和连接形式;与传统的门级描述方式相比,它更适合复杂数字电子系统的设计。 5、用硬件描述语言设计电路有哪些优点?突出的优点: ① 语言的公开可利用性; ② 设计与工艺的无关性; ③ 宽范围的描述能力; ④ 便于组织大规模系统的设计; ⑤ 便于设计的复用、交流、保存和修改等。 6、利用EDA技术进行电子系统的设计有什么特点? 答:① 用软件的方式设计硬件;② 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③ 设计过程中可用有关软件进行各种仿真;④ 系统可现场编程,在线升级;⑤ 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
7、从使用的角度讲,EDA技术主要包括几个方面的内容? 答:EDA技术的学习主要应掌握四个方面的内容:① 大规模可编程逻辑器件;② 硬件描述语言;③ 软件开发工具;④ 实验开发系统。其中,硬件描述语言是重点。
8、硬件描述语言VHDL的特点是什么? VHDL是一种具备形式化、层次化和规范化的硬件描述语言。1硬件相关结构2 VHDL的并发性3混合级描述以及混合级模拟。
9、信号与变量的区别有哪些?信号可以用来描述哪些硬件特性? 答:变量赋值与信号赋值的区别在于,变量具有局部特征,它的有效只局限于所定义的一个进程中,或一个子程序中,它是一个局部的、暂时性数据对象(在某些情况下)。对于它的赋值是立即发生的(假设进程已启动),即是一种时间延迟为零的赋值行为。 信号则不同,信号具有全局性特征,它不但可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其他的实体进行通信(端口本质上也是一种信号)。信号的赋值并不是立即发生的,它发生在一个进程结束时。赋值过程总是有某种延时的,它反映了硬件系统并不是立即发生的,它发生在一个进程结束时。赋值过程总是有某些延时的,它反映了硬件系统的重要特性,综合后可以找到与信号对应的硬件结构,如一根传输导线、一个输入/输出端口或一个D触发器等。 10、名词解释:VHDL、实体说明、.结构体、类属表、数据对象、并行语句、程序包。 答: VHDL(Very high speed intergated circuit Hardware Description Language):非常 高速集成电路的硬件描述语言。
23.简述可编程逻辑器件大致的演变过程 ①.20世纪70年代,熔丝编程编程的PROM和PLA器件是最早的可编程逻辑器件。 ②. 20世纪70年代末,对PLA进行了改进,AMD公司推出PAL器件。 ③. 20世纪80年代初,Lattice公司发明电可擦写的、比PLA使用更灵活的GLA 器件。 ④.20世纪80年代中期,Xilinx公司提出现场可编程概念,同时生产出了世界上第一片FPGA器件。同时,Altera公司推出EPLD器件,较GAL器件有更高的集成度,可以用紫外线或电擦除。 ⑤.20世纪80年代末,Lattice公司推出一系列具备在系统可编程能力
的CPLD器件,将可编程器件的性能和应用技术推向了一个全新的高度。 ⑥.进入20世纪90年代后,可编程逻辑集成电路技术进入飞速发展时期。器件的可用逻辑门数已达百万,并出现了内嵌复杂功能模块(如乘法器、RAM、CPU核、DSP核、PLL等)的FPGA。 ⑦.进入21世纪70后,可编程逻辑集成电路的规模和集成度更有了巨大的进步。利用FPGA方便地实现片上系统(SOC、SOPC)设计已变得十分容易。
24.写出LOOP语句的常用表达式的语法格式 ①.单个LOOP语句 [LOOP标号:]LOOP 顺序语句 END LOOP[LOOP标号]; ②.FOR _LOOP语句 [LOOP标号:]FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP [LOOP标号];
25.简述VHDL的程序结构。 1. 实体 (Entity) 2. 结构体 (Architecture) 3. 配置 (Configuration) 4. 程序包集合 (Package) 5. 库 (Library) 26.写出进程语句结构的一般表达式。 进程标号: process (敏感信号参数表) is 进程说明部分 begin 顺序说明语句 End process 进程标号; 3. 对于VHDL程序,特别是进程结构,设计者需要从哪几个方面去判断它的功 能和执行情况?P81 (1)process为一无限循环语句 (2)process中的顺序语句具有明显的顺序/并行运行双重性 (3)进程必须由敏感信号的变化来启动 (4)进程语句本身是并行语句 (5)信号是多个进程间的通信线 (6)一个进程中只允许描述对应于一个时钟信号的同步时序逻辑 27. IF语句的语句结构有哪几种? (1)if 条件句 then 顺序语句 End if; (2)if 条件句 then 顺序语句 else 顺序语句 End if; (3) if 条件句 then If 条件句 then … End if; end if; (4)if条件句 then 顺序语句 elseif 条件句 then … else 顺序语句 end if;
28.写出CASE语句一般表述。 case 表达式 is when 选择值或标示符 =>顺序语句;… ; 顺序语句; when 选择值或标示符 =>顺序语句;… ; 顺序语句; … When others =>顺序语句; end case;
29. 简述基于VHDL语言的工程设计的基本流程 1 设计准备包括系统设计、设计方案论证和器件选择等。 2 设计输入由设计者利用EDA工具的文本编辑器或图形编辑器对器件的逻辑功能进行描述以文本方式或图形方式表达出来进行编辑和编译变成VHDL文件格式。 3 设计实现利用EDA软件系统的综合器进行逻辑综合然后进行器件的布局、布线和适配最后生成下载文件或位流数据文件。 4 器件编程与配置设计编译好后将数据文件通过编程器或下载电缆下载到目标芯片FPGA/CPLD中。 5 设计验证在上述设计过程中同时进行验证过程包括行为仿真、功能仿真、时序仿真和硬件仿真/器件测试
30.什么是时序仿真? 时序仿真,就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高 41、简要说明原理图设计的一般步骤。答:(1)设置图纸大小;(2)设置环境;(3)放置元件;(4)原理图布线;(5)编辑与调整;(6)输出报表;(7)存盘打印。
42、简单介绍一下电路板的分类?答:印刷电路板常见的板层结构包括单层板(Single Layer PCB)、双层板(Double Layer PCB)和多层板(Multi Layer PCB)三种,这三种板层结构的简要说明如下:单层板:即只有一面敷铜而另一面没有 敷铜的电路板。通常元器件放置在没有敷铜的一面,敷铜的一面主要用于布线和焊接。双层板:即两个面都敷铜的电路板,通常称一面为顶层(Top Layer),另一面为底层(Bottom Layer)。一般将顶层作为放置元器件面,底层作为元器件焊接面。多层板:即包含多个工作层面的电路板,除了顶层和底层外还包含若干个中间层,通常中间层可作为导线层、信号层、电源层、接地层等。层与层之间相互绝缘,层与层的连接通常通过过孔来实现。 43、在PCB设计中,选取元件的主要方法有哪些?答:1. 直接选取元件2. 画框选取元件3.用
菜单命令选取元件
4、执行自动布线的方法主要有下几种?答:1.全局布线(All)2.指定网络布线(Net) 3.指定两连接点布线(Connection)4.指定元件布线(Component)5.指定区域布线(Area) 45、在PCB设计中的DRC电气规则检查主要有几种方式?答:实时检查(On-Line DRC) 和分批检查(Batch DRC)。
46、与HDL文本输入法相比较,原理图输入法有何优点?1:设计者不需增加新的相关知识,如HDL等。2:输入方法与用protel作图相似,设计过程形象直观, 适合初学者入门。3:对于较小的电路模型,其结构与实际电路十分接近, 设计者易于把握电路全局(适合设计小型数字电路)。4:设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用,节省面积。
47、写出结构体的一般语言格式并说明其作用 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句] BEGIN
[功能描述语句]
END ARCHITECTURE 结构体名;
结构体用于描述电路器件的内部逻辑功能或电路结构。使用的语句有顺序语句和并行语句。
48、写出五种以上的VHDL的预定义数据类型。布尔(BOOLEAN)数据类型、位(BIT)数据类型、位矢量(BIT_VECTOR)数据类型字符(CHARACTER)数据类型、整数(INTEGER)数据类型、实数(REAL)数据类型字符串(STRING)数据类型、时间(TIME)数据类型
49、49. 若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其原理。方法1,添加辅助进程对输出数据进行锁存。方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺。
50、描述一下EDA技术的4个基本条件答:1)大规模可编程逻辑器件为设计载体2)硬件描述语言为系统逻辑描述的主要表达手段3)软件开发工具,它是利用EDA技术进行点字系统设计的智能化的自动化设计工具4)实验开发系统,它是利用EDA技术进行电子系统设计的下载工具及硬件验证工具。
50、51、试用TYPE语句定义这样一个数组: 要求数组名称为HELLO,其中包含十个由INTEGER类型的数据,按升序排列。答:TYPE HELLO IS INTEGER RANGE 0 TO 9。
52、什么叫标识符?VHDL的基本标识符是怎样规定的?答:标识符是指用来为常数、变量、信号、端口、子程序或者参数等命名,由英文字母、数字和下划线组成。 遵从的规则:(1)首字符必须是英文字母。(2)不连续使用下划线“_”,不以下划线“_”结尾的。(3)大小写英文字母等效,可以大小写混合输入。(4)标识符中不能有空格。 (5)VHDL的保留字不能用于作为标识符使用。
1、完成 2 选 1多路选择器的设计。
library ieee; use ieee.std_logic_1164.all; entity mux21 is generic(delay: time);
port(a,b,s: in std_logic; y: out std_logic); end; architecture bh of mux21 is signal q_tmp: std_logic; begin process(a,b,s) is variable tmp0,tmp1: std_logic;
Begin tmp0:=a and (not s); tmp1:=b and s; q_tmp<=tmp0 or tmp1; y<=q_tmp after delay; end process; end;
2、完成BCD码转LED共阴译码显示器设计。
library ieee; use ieee.std_logic_1164.all; ENTITY DECODER IS
PORT(INPUT:RANGE 0 TO 9;DRIVE:OUT BIT_VECTOR(0 TO 6)); END DECODER; ARCHITECTURE ART OF DECODER IS BEGIN WITH INPUT SELECT
DRIVE<=B“1111110” WHEN 0, B“0110000” WHEN 1, B“1101101” WHEN 2, B“1111001” WHEN 3, B“0110011” WHEN 4, B“1011011” WHEN 5, B“1011111” WHEN 6, B“1110000” WHEN 7, B“1111111” WHEN 8,
B“1111011” WHEN 9, B“0000000” WHEN OTHERS; END ARCHITECTURE ART; 3、完成8位移位寄存器的设计。
library ieee; use ieee.std_logic_1164.all; entity shift is port(clk,c0: in std_logic; md: in std_logic_vector(2 downto 0); d: in std_logic_vector(7 downto 0); qb: out std_logic_vector(7 downto 0); cn: out std_logic); end; architecture bh of shift is signal reg: std_logic_vector(7 downto 0); signal cy: std_logic; begin process(clk,md,c0) is begin
if clk'event and clk='1' then case md is when \ reg(7 downto 1)<=reg(6 downto 0); cy<=reg(7); when \reg(7 downto 1)<=reg(6 downto 0); when \eg(6 downto 0)<=reg(7 downto 1); when \reg(6 downto 0)<=reg(7 downto 1); cy<=reg(0);
when \ when others=> reg<=reg;cy<=cy; end case; end if; end process; qb(7 downto 0)<=reg(7 downto 0); cn<=cy; end; 4、采用CASE语句描述一个四选一数据选择器,当选择端SEL分别为 00,01,10,11时,输出Y 分别输出A,B,C,D。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL ENTITY MUX41 IS
PORT(A,B,C,D:IN STD_LOGIC; SEL:IN STD_LOGIC_VECTOR(1 DOWNTO 0); Y:OUT STD_LOGIC); END MUX41; ARCHITECTURE BEHAV OF MUX41 IS
BEGIN PROCESS(A,B,C,D,SEL) BEGIN CASE SEL IS WHEN ”00”=>Y<=A; WHEN ”01”=>Y<=B; WHEN ”10”=>Y<=C; WHEN ”11”=>Y<=D; WHEN OTHERS=>Y<=0; END CASE; END PROCESS; END BEHAV; 5.设计一位比较器,当A>B时输出Q=1; 否则输出Q=0.
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY COMP IS PORT(A,B:IN STD_LOGIC; Q:OUT STD_LOGIC);
END COMP ; ARCHITECTURE BEHAV OF COMP IS BEGIN
PROCESS(A,B) BEGIN IF A>B THEN Q<=‘1’; ELSE Q<=‘0’;; END IF; END PROCESS; END BEHAV;
6、写出具有异步清零功能、时钟上升沿触发的D触发器的VHDL描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF IS
PORT(D, CLK,RESET:IN STD_LOGIC; Q:OUT STD_LOGIC); END DFF;
ARCHITECTURE BEHAV OF DFF IS BEGIN PROCESS(D,CLK,RESET)
BEGIN IF RESET=’1’ THEN Q<=’0’; ELSIF CLK’EVENT AND CLK=’1’THEN Q<=’D’; END IF; END PROCESS; END BEHAV;
7、写出具有异步清零功能、时钟下降沿触发的D触发器的VHDL描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF IS
PORT(D, CLK,RESET:IN STD_LOGIC; Q:OUT STD_LOGIC); END DFF; ARCHITECTURE BEHAV OF DFF IS BEGIN PROCESS(D,CLK,RESET)
BEGIN IF RESET=’1’ THEN Q<=’0’; ELSIF CLK’EVENT AND CLK=’0’THEN Q<=’D’;
END IF; END PROCESS; END BEHAV; 8、完成基本RS触发器的设计。(RS端子低电平有效)
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF IS PORT(R,S,CLK:IN STD_LOGIC; Q:OUT STD_LOGIC); END DFF; ARCHITECTURE BEHAV OF DFF IS BEGIN PROCESS(R,S,CLK) BEGIN IF CLK’EVENT AND CLK=’1’THEN IF((R=’0’)AND (S=’1’)) THEN Q<=’0’; ELSIF ((R=’0’)AND (S=’1’)) THEN Q<=’1’; End if; END IF; END PROCESS; END BEHAV; 9、完成8位奇偶校验器的设计。
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
ENTITY P_CHECK IS PORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y:OUT STD_LOGIC); END P_CHECK; ARCHITECTURE ART OF P_CHECK IS BEGIN PROCESS(A) variable TMP:STD_LOGIC; BEGIN TMP :='0'; --TMP <='0'; FOR N IN 0 TO 7 LOOP --TMP <=TMP XOR A(N); TMP :=TMP XOR A(N); END LOOP; Y<= TMP; END PROCESS END ART;
10、写出具有同步清零功能、时钟上升沿触发的D触发器的VHDL描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF IS PORT(D, CLK,RESET:IN STD_LOGIC; Q:OUT STD_LOGIC); END DFF; ARCHITECTURE BEHAV OF DFF IS BEGIN
PROCESS(D,CLK,RESET) BEGIN IF RESET=’1’ THEN Q<=’0’; ELSIF CLK’EVENT AND CLK=’1’THEN Q<=’D’; END IF; END PROCESS; END BEHAV;
提高题部分
1、设计一个米粒型状态机,功能雷同于上例,只是输入x_in同时控制输出逻辑,方框图如下:
要求设计的功能表如下:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mealy_state is port(clk,x_in,rst: in std_logic; key_en: out std_logic; y: out std_logic_vector(3 downto 0)); end; architecture bh of mealy_state is type state_type is(s1,s2,s3,s4) signal state: state_type; begin
p1: process(clk,rst) is begin if rst='1' then state<=s1; elsif clk'event and clk='1' then case state is
when s1=>if x_in='0' then state<=s2; end if; when s2=>if x_in='1' then state<=s3; end if;
when s3=>if x_in='0' then state<=s4;end if; when s4=>if x_in='1' then state<=s1; end if; when others=> state<=s1; end case; end if; end process; p2: process(state) is begin case state is when s1=>if x_in='0' then y<=\ else y<=\
when s2=>if x_in='1' then y<=\ else y<=\
when s3=>if x_in='0' then y<=\ else y<=\
when others=>if x_in='1' then y<=\ else y<=\ end case; end process; end;
3、用VHDL语言设计7人表决器电路,当通过的人数大于等于4时,该项决议通过,点亮灯来表示,同时用3位数码管同时动态显示通过的人头数。 library ieee; use ieee.std_logic_1164.all; entity qrbjq is port( a: in std_logic_vector(6 downto 0); ck: in std_logic;
num: buffer integer range 0 to 7; sm: out std_logic_vector(6 downto 0); duan: out std_logic_vector(2 downto 0); co: out std_logic); end; architecture art of qrbjq is signal temp: integer range 1 to 3; Begin process(a) is variable b: integer range 0 to 7;
Begin b:=0; for n in 0 to 6 loop if a(n)='1' then b:=b+1; end if; end loop num<=b; if num>=4 then co<='1'; else co<='0'; end if; end process process(num) is Begin case num is when 0=> sm<=\ when 1=> sm<=\ when 2=> sm<=\ when 3=> sm<=\ when 4=> sm<=\ when 5=> sm<=\ when 6=> sm<=\
when 7=> sm<=\ when others=> sm<=\ end case; end process process(ck) is begin
if (ck'event and ck='1') then if temp<3 then temp<=temp+1; if temp=1 then duan<=\ elsif temp=2 then duan<=\ end if; elsif temp>=3 then temp<=1; duan<=\ end if; end if; end process; end;