EDA技术在数字电路设计中的应用
来源:互联网 发布:java socket示例代码 编辑:程序博客网 时间:2024/06/01 17:26
EDA技术在数字电路设计中的应用
E.1数字系统的层次化结构设计
前面介绍的组合逻辑电路和时序逻辑电路的设计都是属于功能部件的设计。功能部件设计是建立在真值表,特性表,状态转换图或工作时序图的基础上,在输入变量较少的情况,因描述逻辑函数关系的各种表格和图表较简单,设计电路分析建模的工作也较简单,按照前面介绍的方法就可以完成电路的设计工作。
层次化结构设计的思想是将设计的目标层层分解,对分解后的各层次电路分别进行设计,最后,再根据分解的规则将各层次电路综合起来组成数字系统。各层次模块组成系统的连接示意图如图E-1所示。因图E-1所示的系统结构连接示意图与树的形状相类似,所以,具有这种结构的系统称为树形结构系统。
对于树型结构系统存在着“自顶向下(Top-down)”设计和“自底向上(Bottom-up)”设计两种不同的设计思想。
自顶向下的设计强调性能上的最优,而自底向上设计强调的是设计上的经济性。实际的设计过程往往是这两种设计方法的综合,但在使用大规模集成电路,特别是使用可编程逻辑器件进行设计时,自顶向下的设计会有更多的优点。
随着电子设计自动化水平的提高,在进行复杂数字系统设计时, 使用EDA仿真工具可以使整个设计过程变得简捷和方便,特别是对各层次电路工作时序图的分析更为快捷和准确,为设计更大规模的数字系统提供了直观准确的实验数据。
下面以2位十进制频率计的设计为例,介绍层次化设计思想在EDA环境下的体现,所采用的EDA工具软件的平台是Max+PlusII。
E.2 2位十进制数字频率计的层次结构框图
利用EDA技术进行2位十进制数字频率计设计的步骤是:先分别设计底层的计数器电路模块和测频时序控制电路模块,再在频率计顶层电路中调入事先设计好的两个底层电路模块。
E.2.1 设计有时钟使能的两位十进制计数器
数字频率计的核心元件之一是含时钟使能和进位扩展输出的十进制计数器。根据时序逻辑电路的设计方法可知,利用两片十进制计数器74160按图E-3(a)所示的连接方法即可组
成有时钟使能的两位十进制计数器。根据图E-3(a)可将带时钟使能的2位十进制计数器表示成如图E-3(b)所示的模块。
模块中各输入输出信号的含义分别为:EN为计数使能信号,当EN为“1”时允许计数器计数;EN为“0”时禁止计数器计数;CLK为计数器的CP信号,在频率计电路中,该端口的输入信号就是待测频率的信号;CLR为计数器的清零信号;输出为两个4位总线的输出信号Q7-Q4和Q3-Q0;COUT为扩展输出的进位信号。
由集成电路手册可知,2位十进制计数器的功能除了用两片74160搭建外,采用双十进制计数器74390和附加的门电路来搭建也可以,采用74390在Max+PlusII软件上搭建的2位十进制计数器电路的连接图如图E-4所示。
图E-4中的74390连接成两个独立的十进制计数器,待测频率信号CLK通过一个与门输入74390计数器1的时钟输入端1CLKA,与门的另一端由计数器使能信号EN控制;当EN为“1”时允许计数;当EN为“0”时禁止计数。计数器1的4位输出Q[3]、Q[2]、Q[1]和Q[0]并成总线表达方式即Q[3..0],由output端口向外输出。第二个计数器输出是Q[7]、Q[6]、Q[5]和Q[4],总线输出信号为Q[7..4]。
因74390内部含有两片74290电路,74290为2-5-10进制的计数器,要将74290芯片连接成十进制的计数器,计数器的Q[0]和Q[4]输出端信号应分别与1CLKB和2CLKB输入端相连接。因74390芯片没有进位输出信号的引脚,用4输入的与门来搭建进位输出信号,当Q[3..0]计数到9时,4输入的与门输出为“1”,产生进位输出信号。进位输出信号一方面送到6输入的与门电路作为其中的一个输入信号,另一方面送到74390的2CLKA时钟信号输入端,作为十位数计数器的CP信号,从而实现2位十进制计数的功能。
E.2.2 在MAX+plusII中实现计数器电路
要在MAX+plusII软件上搭建图E-4所示的电路,必须先启动MAX+plusII软件。启动MAX+plusII软件可看到如图E-5所示的启动界面。
MAX+plusII软件提供两种实现计数器电路的方法,一种是原理图输入法,另一种是文本输入法。图E-4所示的电路是利用原理图输入法建立的电路,下面介绍用原理图输入法建立计数器电路的操作步骤:
1.为本项工程(project)设计建立文件夹
EDA软件中任何一项设计都是一个工程(project),都必须建立一个文件夹来存入与该工程相关的文件。该文件夹将被EDA软件默认为工作库(Work Library)。设本项工程的文件夹为d:/cjz/myproject。
2.输入设计项目并存盘
(1)运行MAX+plusII,选择File|NEW命令,点击如图E-6(a)所示的项目,在弹出如图E-6(b)所示的对话框中选择第一项Grapgic Editor file(原理图编辑),然后按下OK键即可打开如图E-7所示的原理图编辑窗口。
(2)在原理图编辑窗口的任一位置右击鼠标,在弹出的快捷菜单中选择“Enter Symbol”(输入元件项),如图E-8(a)所示;在弹出的对话框中双击“d:/mxaplus2/maxlib/mf”宏功能元件库,找到74390器件,双击将其调入到原理图编辑窗口中,如图E-8(b)所示。也可以在“Symbol Name”框中用键盘直接输入所需的元件名74390,点击“ok”即可将74390调入工作界面。
要了解74390电路的内部结构,将鼠标移到74390芯片上,双击74390,屏幕上即可显示如图E-9所示的74390芯片内部电路结构逻辑图。
(3)用同样的方法在“Enter Symbol”对话框中的“d:/mxaplus2/maxlib/prim”(基本元件库)中调入与门、非门和输入,输出端口等基本元件,如图E-10所示。
图E-10中的“+”虚线是电路连线的指示标记,电路连线的方法是:将鼠标移到要连线电路的端口,鼠标自动变为“+”形状,按住鼠标的左键,并将鼠标拖到连线的另一个端口上,放开左键 ,电路的连接线即可画好。要删除连接好的导线,只要单击该导线,并按 Del 键即可。
输入端口和输出端口也是在“d:/mxaplus2/maxlib/prim”(基本元件库)中,只要在前面介绍的对话框中输入“input”和“output”就可以将这两个器件调入工作界面。分别在input和output的PIN NAME上双击使其变为黑色,就可以对该端口进行更改名字的操作。
在电路中进行信号标记和总线表达方式的方法是:单击要表达成总线的细线使其变成红色,然后单击右键,根据如图E-11所示的方法选择粗线,即可将该导线表达成总线。在总线旁边加信号标记的方法是:点击总线,在出现小黑点的指示符后,从键盘上输入标号名称,电路上标有相同标号的线段可视为连接线段,不必再另外直接连接,图E-4所示电路中的Q[3..0]为总线输出方式,分别代表电路中Q[3]、Q[2]、Q[1]和Q[0]的信号输出端。
在连接电路时,若要移动元件的位置,只要用鼠标单击,选择该元件,这时元件的周围会出现一个红色的方框,用鼠标拖动即可移动元件的位置。
(4)连接好电路后,选择FILE|SAVE AS命令,将设计好的文件存到事先准备好的文件夹d:/cjz/myproject下,文件扩展名为gdf。
3.将设计文件设置成工程文件(project)
为了使MAX+PlusII能对输入的设计项目按设计者的要求进行各项处理,必须将设计项目的文件转换成工程文件,转换工程文件的方法是:先打开设计文件,然后根据如图E-12所示的选择项目,执行FILE|PROJECT|SET PROJECT TO CURRENT FILE命令,即可将当前设计文件转换成工程文件(Project)。
执行该命令后可在标题栏中显示出所设文件的路径,这时要特别注意此路径的指向是否正确。
4.选择目标器件并编译
为了获得与目标器件对应的、精确的时序仿真文件,在对文件进行编译前必须选定最后实现本项目的目标器件,在MAX+PlusII环境下需要选择Altera公司的FPGA或CPLD器件。在选择器件时可以自己选择某个具体的器件,也可以让编译器在该器件系列内自动选择最适合本项目的器件。具体方法如下:
(1)在Assign菜单中选择Device项,将出现Device对话框。如图E-13所示:
(2)在Device Family对话框中选择一个器件系列。
(3)在Devices列表框中选择某一器件或者选择Auto让MAX+PlusII为本项目的设计选择一个合适的器件,然后按OK键。
(4)接下来打开编译器窗口。在MAX+PlusII菜单中选择Compiler项,在如图E-14所示的编译器窗口中选择Start按钮开始编译,MAX+PlusII编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到我们上面所选定的Altera器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
5.时序仿真
电路设计完成以后,可以利用时序仿真来测试设计项目的正确性,时序仿真的操作步骤是:
(1)建立波形文件
选择MAX+PlusII下的菜单命令FILE|NEW,在弹出的对话框中选择“Waveform Editor file”(波形编辑文件)选项,打开如图E-15所示的波形编辑窗口。
(2)输入信号节点
在波形编辑窗口中选择菜单命令NODE|Enter Nodes from SNF…,在弹出如图E-16所示的对话框中单击“List”按钮,这时左边的列表框中将列出该设计项目所有的信号节点。如果用户只需观察其中部分的信号波形,可利用“<=”键将需要观察的信号选到右边的列表框中,然后单击“OK”按钮即可。
在为波形编辑框中的信号设定必要的测试电平之前,首先必须设定相关的仿真参数。
例如,在“Option”菜单中取消“Snap to Grid”(对齐网格)项的“√”号,以便能够在任意位置设置输入电平,或设置输入信号的时钟周期。
(4)设置仿真时间
选择File|End Time项,在End Time对话框中选择适当的仿真时间,如20s。
(5)加上输入信号
利用左边工具栏中的工具为输入信号设定测试电平,工具栏波形编辑窗口的功能如图E-17所示
如果窗口中看不到各个时钟周期波形,可以单击窗口左边工具栏中的放大和缩小按钮。接着选择CLR信号,先点击赋“0”值按钮使其赋值为0,再用鼠标将某段波形拖黑,再按左侧的“赋1值”按钮,将其赋值为1。用同样的方法也可设置EN信号的波形。
(5)波形文件存盘
选择File|Save as命令将波形文件存盘,如图E-20所示,波形文件的默认扩展名为.scf。
(6)运行仿真器。
选择如图E-21(a)所示的MAX+PlusII主菜单下的仿真项Simulator选项,在弹出如图E-21(b)所示的仿真对话框中选择“Start”按钮,即可得到如图E-22所示的仿真结果。
(a) (b)
图E-21 仿真对话框
打开MAX+PlusII主菜单下的“Timing Analyzer”(时序分析器)项,可以精确测量电路输入和输出波形之间的延时量。
(7)包装元件入库
选择菜单File|open,在open对话框中选择“Graphic Editor Files”,重新打开刚才设计好的文件,然后选择“File”菜单的“Create Default Symbol”选项,将当前文件变成一个包装好的单一元件(Symbol),并放置在工程路径指定的文件夹中备用。
E.2.3 在MAX+plusII中实现测频时序控制电路的设计
要使频率计能够自动测频,必须在电路中增加一个测频控制电路。测频控制电路能够产生CNT_EN(测频使能)、CLK(计数)和CLR(清零) 三个控制信号,控制频率计顺利的完成测频,计数,锁存和清0的工作。根据控制信号CNT_EN、LOCK和CLR时序的要求可得,测频时序控制电路应由三个部分组成:4位2进制计数器7493,4线-16线译码器74154和两个双与非门构成的RS触发器。测频时序控制电路的逻辑图如图E-23所示。
根据频率计的测频原理和实际使用的需要可得,频率计顶层电路应由数码显示器和数据锁存器组成。频率计顶层电路的逻辑图如图E-25所示。
E.2.5设计项目的其他信息和资源配置
最终的电路设计完成后还可以利用MAX+PlusII提供的功能进一步了解设计项目的其他相关信息。
(1)选择MAX+PlusII下的菜单项Hierarchy Display可以了解设计项目的设计层次。
(2)选择MAX+PlusII下的菜单项Floorplan Editor可以了解资源分配情况。
(3)选择MAX+PlusII下的菜单项Timing Analyzer可以了解设计项目的速度/延时特性。
E.3 数字逻辑电路的VHDL描述
硬件描述语言HDL(Hardware Description Language)是一种对数字电路和系统进行性能描述和模拟的语言,利用该语言可以进行不同设计阶段的系统描述。目前,该语言正广泛应用于EDA技术中。
E.3. 1 VHDL描述的基本结构
在MAX+PlusII除了允许电路用原理图输入外,还允许用VHDL描述的文本文件输入。基本的VHDL描述由两部分组成:实体描述(entity)和结构体描述(architecture)。
实体描述的基本格式为:
Entity 实体名
PORT(信号名:类别 信号类型;
。。。
信号名:类别 信号类型);
END 实体名;
结构体描述的基本格式:
Architecture 结构体名 of 实体名 IS
>声明部分<
BEGIN
>结构体描述部分<
END 结构体名;
E.3.2 用VHDL描述组合逻辑电路和时序逻辑电路
因用VHDL来描述数字频率计的程序很长,下面以与非门电路和译码器电路为例来简单介绍用VHDL来描述组合逻辑电路的方法,以D触发器和计数器为例来介绍用VHDL来描述时序逻辑电路的方法。
1.组合逻辑电路的描述
(1)用VHDL描述与非门电路的程序如下:
Library IEEE;--打开IEEE库
Use IEEE.STD_LOGIC_1164.all;--打开IEEE库中的STD_LOGIC_1164程序包中的所有内容
Entity nor2 IS --实体描述
Port(a,b:IN STD_LOGIC; --端口描述
Y:OUT STD_LOGIC);
END nor2;
ARCHITECTURE nor2_1 OF nor2 IS--结构体描述
BEGIN
y>=a NOR b;--输入与输出信号之间的行为描述
END nor2_1;
结构体的描述方法有三种:行为(Behavioural Description)描述、数据流(Dataflow Description)描述和结构描述(Structural Description)。在以上对与非门电路的描述中我们采用的是结构体的行为描述方法。与非门电路也可以用数据流的描述方法,具体描述如下:
Library IEEE;
USE STD_LOGIC_1164.all;
ENTITY nor2 IS
PORT(a,b:STD_LOGIC;
y: OUT STD_LOGIC);
END nor2;
ARCHITECTURE nor2_2 of nor2 IS
BEGIN
T2:
Process(a,b)
Variable:comb:STD_LOGIC_VECTOR(1 downto 0);--定义变量
BEGIN
Comb:=a&b;
CASE comb IS—选择语句
When “00”=
When “01”=
When “10”=
When “11”=
When others=
END Case;
END process t2;
END nor2_2;
(2)74LS138译码器的VHDL描述如下
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY decoder3_8 IS
PORT(a,b,c,g1,g2a,g2b:IN STD_LOGIC;
y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
END decoder3_8;
ARCHITECTURE rt1 OF decoder3_8 IS
SIGNAL indata:STD_LOGIC_VECTOR(2 Downto 0);
BEGIN
Indata>=c&b&a;
PROCESS(indata,g1,g2a,g2b)
BEGIN
IF(g1=1 AND g2a=0 AND g2b=0) THEN
CASE indata IS
WHEN “000” =
WHEN “001” =
WHEN “010” =
WHEN “011” =
WHEN “100” =
WHEN “101” =
WHEN “110” =
WHEN “111” =
WHEN OTHERS=
END CASE;
ELSE
Y>=”11111111”;
END IF;
END PROCESS;
END rt1;
2.时序逻辑电路的VHDL描述
(1)D触发器的VHDL描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.All;
ENTITY dff_logic IS
PORT(d,clk:IN STD_LOGIC;
q:OUT STD_LOGIC);
END dff_logic;
ARCHITECTURE dff1 OF dff_logic IS
Begin
Process(clk)
Begin
IF (clk’event and clk=1)Then
q>=d;--在clk上升沿,d赋予q
END IF;
END process;
END dff1;
这里我们用clk’event and clk=1来表示上升沿,也可以用rising_edge(clk)来表示。
(2)计数器的VHDL描述如下:
Library IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT4 IS
PORT(clk,clr,en:IN STD_LOGIC;
q: OUT STD_LOGIC_VECTOR(3 Downto 0);
END CNT4;
ARCHITECTURE bhv OF CNT4 IS
SIGNAL q1:STD_LOGIC_VECTOR(3 Downto 0);
BEGIN
q>=q1;
process(clk,clr);
BEGIN
IF(clr=’1’) Then
q1>=”0000”;
ELSIF (Clk’Event And clk=’1’) Then
IF(en=’1’) Then
If (q1=”1111”) Then
q1=”0000”;
ELSE
q1>=q1+1;
END IF;
END IF;
END IF;
END process;
END bhv;
E.3.3 在MAX+PlusII中的文本输入设计方法
1.VHDL文件的创建
可以使用任何的文件编辑器进行VHDL代码的输入,MAX+PlusII软件中提供了VHDL文本编辑器。运行MAX+PlusII软件,选择FILE|NEW命令,在出现的文件类型选择对话框中选择“Text Editor file”选项然后单击”OK”按钮确定。
在打开的文本输入窗口中输入VHDL代码,如图E-27所示:
2.输入完毕后,选择菜单命令FILE|SAVE将弹出”Save as”对话框的Directories目录框中选择已建立的存放该文件的文件夹,并在”File Name”对话框中输入文件名***.vhd。注意:这里的文件名必须与实体相同,文件扩展名为.VHD。
3.选择菜单命令Peoject|Set Project to Current File将当前文件转换为工程文件,以进行后面的编译。
4 . 打开编译器窗口,在MAX+PlusII菜单中选择Compiler项,在弹出的编译器窗口中,选择Interfaces菜单下的VHDL Netlist Reader Settings选项,进行VHDL文本编译版本号的设置,如图E-28所示。
选择MAX+PlusII|COMPILER命令,将出现编译器窗口,如下图所示:
5.单击编译器窗口中的“START”进行编译,若有错,及时排查错误。
6.重复上面介绍的时序仿真步骤即可进行电路设计的时序仿真。
- EDA技术在数字电路设计中的应用
- 流水线技术在高速数字电路设计中的应用
- 数字电路 eda
- 浅谈小信号肖特基二极管在数字电路中的应用
- 简述基于EDA技术的FPGA设计
- Flex技术在企业级开发中的应用-网页设计
- 反射技术在工厂设计模式中的应用
- 各种流行验证技术在芯片设计流程中的应用
- 数字电路设计中的亚稳态及其解决方法
- EDA设计主要流程
- EDA循环计数器设计
- EDA实验DDS设计
- 数字电路设计之数字电路工程师面试集锦
- 数字电路抗干扰设计
- 数字电路抗干扰设计
- 基础数字电路设计
- ASP技术在电子商务中的应用
- Microsoft Agent技术在Delphi中的应用
- 交通灯控制电路
- 实验3、11.数字抢答器设计
- IT人职场四种痛
- 实验3.10 D/A、A/D转换器
- 第四部分 电 子 电 路 仿 真 实 验
- EDA技术在数字电路设计中的应用
- .ASP.NET页面跳转提示保存(原创)
- 5.4.1 寄存器
- spring结合velocity的应用实例
- #1 数电篇:计数器.触发器......
- 4_2 内核钩子 - 《Rootkits——Windows内核的安全防护》第二部分 (转自CSDN读书频道)
- #2 触发器的电路结构与动作特点
- 《时代》关于李宇春的评论(转载)
- Mother''s Day 母亲节(转载)