者首先根据系统设计的功能模块划分并进行描述,把功能模块放到芯片中进行设计,再用它们的连接来构成整个芯片,从而用单片或几片FPGA/CPLD实现系统的主要功能。
(4)电路板级设计
电路板级设计简称PCB设计,它是在芯片设计的基础上,通过对芯片和其他电路元件之间的连接,把各种元器件组合起来构成完整的电路系统;并且依照电路性能、机械尺寸、器件封装形式、工艺及环境要求,确定电路板的尺寸、形状,进行元器件的布局、布线。
(5)电路调试和系统调试
数字系统设计必须进行电路调试和系统调试,其目的是检查设计中存在的问题。当然,随着EDA技术的发展,新的技术和工具总是引入新的方法,电路和系统仿真成为系统设计的主要手段,电路调试和系统调试在某种程度上前移,使最后的硬件调试变的简单和容易。但是,电路和系统的硬件调试是不可缺少的步骤。
(6)结构设计
结构设计包括机箱和面板设计。结构设计属于工艺和工业造型的问题,目的是获得较好的电气、机械性能和美观的外形。一般采用计算机辅助工艺规划(CAPP)、机械三维实体等设计软件来实现。有时这一步骤与其它设计步骤并行进行。
12、 什么叫功能仿真?什么叫模拟仿真?、两者有什么区别?
答:功能仿真又称前仿真,是在不考虑器件延时的理想情况下的一种项目验证方法,通过功能仿真来验证一个项目的逻辑功能是否正确。时序仿真又称模拟仿真或后仿真,是在考虑设计项目具体适配器件的各种延时的情况下的一种项目验证方法。时序仿真不仅测试逻辑功能,还测试目标器件最差情况下的时间关系。 13、在数字系统设计中锁定引脚的作用是什么?
答:将设计文件中的输入、输出信号定位到所选器件的具体物理管脚上。 14. 简述面向FPGA/CPLD的EDA工程的设计流程。 答: EDA的工程设计流程如下:
第一步需要进行“设计输入”,即用一定的逻辑表达手段将设计表达出来; 第二步要进行“逻辑综合”,就是将电路的高级语言描述转换成低级的,可与
FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件;
第三步要进行“目标器件的适配”。在选定的目标器件中建立这些基本逻辑电路及对应关系(逻辑实现);
第四步要进行目标器件的编程与下载。将由FPGA/CPLD适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片FPGA或CPLD中;
最后,要进行硬件仿真/硬件测试,验证有关设计结果与设计构想是否相符。( 15.简述传统设计方法与EDA方法的区别。 答:
传统的数字系统设计方法是自下而上的设计方法,是以固定功能元件为基础,基于电路板的设计方法,主要设计文件是电路原理图。
现代数字系统的设计采用EDA方法,EDA方法是一种自上而下的设计方法,其方案设计与验证、系统逻辑综合、布局布线、性能仿真、器件编程等均由EDA工具一体化完成。
传统设计方法由于它首先进行的是底层设计,因此缺乏对整个系统总体性能的把握。系统规模越大,复杂度越高,其缺点越突出:设计依赖于设计师的经验,设计依赖于现有的通用元器件;设计后期的仿真不容易实现和调试复杂;自下而上设计思想的局限;设计实现周期长,灵活性差,耗时耗力,效率低下。
EDA技术极大降低了硬件电路设计难度,为电子系统设计带来如下变化:设计效率提高,设计周期缩短;设计质量提高;设计成本降低;能充分发挥设计人员的创造性,设计成果的重用性大大提高,省去了不必要的重复劳动。 16. 什么叫功能仿真?什么叫模拟仿真?、两者有什么区别?
答:功能仿真又称前仿真,是在不考虑器件延时的理想情况下的一种项目验证方法,通过功能仿真来验证一个项目的逻辑功能是否正确。
时序仿真又称模拟仿真或后仿真,是在考虑设计项目具体适配器件的各种延时的情况下的一种项目验证方法。
时序仿真不仅测试逻辑功能,还测试目标器件最差情况下的时间关系。
六、解释程序 (30分) 要求:
1.解释带有下划线的语句。 2.画出该程序的引脚示意图。 3.说明该程序逻辑功能。 程序一
library ieee; 定义库 use ieee.std_logic_1164.all;
ENTITY mux21 is 定义实体 port(a,b,s:in bit;
y:out bit);
end mux21a;
architecture one of mux21 is 定义结构体 begin
y<=a when s='0' else b; end one; 程序二
library ieee;
use ieee.std_logic_1164.all; entity bijiao is
lport(dat1,dat2:in std_logic_vector(3 downto 0); dat3,dat4:in std_logic_vector (3 downto 0); out1,out2:out std_logic_vector(3 downto 0)); end bijiao;
architecture one of bijiao is
function max(a,b:in std_logic_vector) 函数体,参数:a,b,输入,数据类型 return std_logic_vector is
variable temp: std_logic_vector(3 downto 0); 定义变量 begin
if a>b then temp:=a; else temp:=b; end if;
return temp; 返回temp end max; 函数体结束 begin
out1<=max(dat1,dat2); 调用函数max( )将值返回out1 out2<=max(dat3,dat4); end one; 解释程序 要求:
4.解释带有下划线的语句。 5.画出该程序的原理图符号。 6.说明该程序逻辑功能。
7.改用WITH_SELECT_WHEN语句编写下列程序。 Library ieee;
Use ieee.std_logic_1164.all; 定义元件库 entity qk_11 is
port( a,b,c,d,en:in std_logic;
s:in std_logic_vector(1 downto 0); 输入信号s是两位的输入总线 op:out std_logic ); end qk_11;
architecture ar_1 of qk_11 is
signal f:std_logic_vector(2 downto 0);
begin
f<=en&s; 将输入信号en和s连接赋值给f
process (f) 敏感信号f的变化将启动进程 process begin
case f is
when\ when\ when\
when others=>op<=d; 其他情况,将输入信号d赋值给op end case; end process; end ar_1;
逻辑功能是:带有使能端en的四选一数据选择器。
用WITH_SELECT_WHEN语句编写上述程序: Library ieee;
Use ieee.std_logic_1164.all; entity qk_11 is
port( a,b,c,d,en:in std_logic;
s:in std_logic_vector(1 downto 0); op:out std_logic ); end qk_11;
architecture ar_1 of qk_11 is
signal f:std_logic_vector(2 downto 0); begin f<=en&s;
with f select
op<=a when \ b when \ c when \ d when others; end ar_1;
七、编程题20分(每题10分)
1.用VHDL语言编写2位带进位的加法器(原理图如下)
library ieee;
use ieee.std_logic_1164.all; ENTITY adder_2 is
port(a1,a0,b1,b0,ci:in std_logic;
s1,s2,co:out std_logic); end adder_2; architecture one of adder_2 is component adder_1 port(x,y,cin:in std_logic;
cout,sum:out std_logic); end component; signal temp:std_logic; begin
u1:adder_1 port map(a1,a0,ci,temp,s1); u2:adder_1 port map(b1,b0,temp,co,s2); end one;
2.用CASE语句编写2-4译码器
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY decoder2_4 IS PORT( A1, A0,G1,G2A,G2B: IN STD_LOGIC;
Y: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END decoder2_4;
ARCHITECTURE fun OF decoder2_4 IS
SIGNAL indata: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
indata <= C&B&A; encoder:
PROCESS (indata, G1, G2A,G2B) BEGIN IF (G1='1' AND G2A='0' AND G2B='0') THEN CASE indata IS WHEN \ WHEN \ WHEN \
WHEN \