EDA技术主要概念

EDA技术主要概念,第1张

EDA技术主要概念

EDA(电子线路设计座自动化)是以计算机为工作平台、以硬件描述语言(VHDL)为设计语言、以可编程器件(CPLD/FPGA)为实验载体、以ASIC/SOC芯片为目标器件、进行必要元件建模和系统仿真电子产品自动化设计过程。下面是我整理的EDA技术主要概念相关内容。

EDA软件简介

“EDA”就是Electronic Design AutomaTIon(电子设计自动化),也就是能够帮助人们设计电子电路或系统软件工具,该工具可以使设计更复杂电路和系统成为可能。目前进入我国并具有广泛影响EDA软件有:muhisim7、OW_AD、Protel、Viewlogio、Mentor、Synopsys、PCBW Id、Cadence、MicmSim等等,这些软件各具特色,大体分为芯片级设计工具、电路板级设计工具、可编程逻辑器件开发工具和电路仿真工具等几类;其中Protel是国内最流行、使用最广泛一种印制电路板设计首选软件,由澳大利亚protd Technology公司出品,过去只是用来进行原理图输入和PCB版图设计,从Protel 98开始,加入了模拟数字混合电路仿真模块和可编程逻辑器件设计模块,1999年Protel推出了功能更加强大EDA综合设计环境Protel 99,它将EDA全部内容整合为一体,成为完整EDA软件,因而该软件发展潜力很大,但它最具特色和最强大功能仍是原理图输人和PCB版图设计。

EDA技术主要内容

EDA技术涉及面很广,内容丰富,从教学和实用角度看,主要应掌握如下4个方面内容:一是大规模可编程逻辑器件;二是硬件描述语言;三是软件开发工具;四是实验开发系统。其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计载体,硬件描述语言是利用EDA技术进行电子系统设计主要表达手段,软件开发工具是利用EDA技术进行电子系统设计智能化自动设计工具,实验开发系统则是利用EDA技术进行电子系统设计下载工具及硬件验证工具。

EDA技术主要特征

1、用软件设计方法来设计硬件

硬件系统转换是由有关开发软件自动完成,设计输入可以是原理图VHDL语言,通过软件设计方式测试,实现对特定功能硬件电路设计,而硬件设计修改工作也如同修改软件程序一样快捷方便,设计整个过程几乎不涉及任何硬件,可 *** 作性、产品互换性强。

2、基于芯片设计方法

EDA设计方法又称为基于芯片设计方法,集成化程度更高,可实现片上系统集成,进行更加复杂电路芯片化设计和专用集成电路设计,使产品体积小、功耗低、可靠性高;可在系统编程或现场编程,使器件编程、重构、修改简单便利,可实现在线升级;可进行各种仿真,开发周期短,设计成本低,设计灵活性高。

3、自动化程度高

EDA技术根据设计输入文件,将电子产品从电路功能仿真、性能分析、优化设计到结果测试全过程在计算机上自动处理完成,自动生成目标系统,使设计人员不必学习许多深入专业知识,也可免除许多推导运算即可获得优化设计成果,设计自动化程度高,减轻了设计人员工作量,开发效率高。

4、自动进行产品直面设计

EDA技术根据设计输入文件(HDL或电路原理图),自动地进行逻辑编译、化简、综合、仿真、优化、布局、布线、适配以及下载编程以生成目标系统,即将电子产品从电路功能仿真、性能分析、优化设计到结果测试全过程在计算机上自动处理完成;

EDA技术要点

1、可编程逻辑器件-PLD

数字逻辑器件发展直接反映了从分立元件、中小规模标准芯片过渡到可编程逻辑器件过程。ISP技术和HDPLD器件使设计人员能够在实验室中方便地开发专用集成数字电路芯片ASIC当前,国内外许多著名厂商均已开发出新一代ISP器件以及相应开发软件(如Synario、EXPERT、FundaTIon、MAX Plus2等)。

2、“自顶而下”设计方法

10年前,电子设计基本思路还是选择标准集成电路“自底向上”(Bottom-Up)地构造出一个新系统。这样设计方法如同一砖一瓦建造楼房,不仅效率低、成本高而且容易出错,高层次设计给我们提供了一种“自顶向下”(Top-Down)全新设计方法,这种方法首先从系统入手,在顶层进行功能方框图划分和结构设计,在方框图一级进行仿真、纠错,并用硬件描述语言对高层系统进行描述,在系统一级进行验证,然后用综合优化工具生成具体门电路网表,其对应物理实现级可以是印刷电路板或专用集成电路,由于设计主要仿真和调试过程是在高层次上完成,这既有利于早期发现结构设计上错误,避免设计工时浪费,同时也减少了逻辑功能仿真工作量,提高了设计一次成功率。

扩展: EDA技术布局常用规则

1我们要注意贴片器件(电阻电容)与芯片和其余器件的最小距离芯片:一般我们定义分立器件和IC芯片的距离05~07mm,特殊的地方可能因为夹具配置的不同而改变

2对于分立直插的器件

一般的`电阻如果为分立直插的比贴片的距离略大一般在1~3mm之间。注意保持足够的间距(因为加工的麻烦,所以直插的基本不会用)

3对于IC的去耦电容的摆放

每个IC的电源端口附近都需要摆放去耦电容,且位置尽可能靠近IC的电源口,当一个芯片有多个电源口的时候,每个口都要布置去耦电容。

4在边沿附近的分立器件

由于一般都是用拼板来做PCB,因此在边沿附近的器件需要符合两个条件,第一就是与切割方向平行(使器件的应力均匀),第二就是在一定距离之内不能布置器件(防止板子切割的时候损坏元器件)

5如果相邻的焊盘需要相连,首先确认在外面进行连接,防止连成一团造成桥接,同时注意此时的铜线的宽度。

6焊盘如果在铺通区域内需要考虑热焊盘(必须能够承载足够的电流),如果引线比直插器件的焊盘小的话需要加泪滴(角度小于45度),同样适用于直插连接器的引脚。

7元件焊盘两边的引线宽度要一致,如果时间焊盘和电极大小有差距,要注意是否会出现短路的现象,最后要注意保留未使用引脚的焊盘,并且正确接地或者接电源。

8 注意通孔最好不要打在焊盘上。

9另外就是要注意的是引线不能和板边过近,也不允许在板边铺铜(包括定位孔附近区域)

10大电容:首先要考虑电容的环境温度是否符合要求,其次要使电容尽可能的远离发热区域

;

module contr_1(lod,clk,aq,qa,d); //模块开始
input[7:0] aq; //输入单字节aq
input clk; //输入时钟信号
output reg[7:0] qa; //输出8为寄存器类型
output reg[11:0]d; //输出12位寄存器类型
output reg lod; //输出寄存器类型
reg [1:0] qc; //2为寄存器类型qc
initial begin qa='h19;d='b001100001100;end //初始化 qa、d
always @(negedge clk ) // 时钟下降沿执行本alway下面的语句
begin if (aq==0) lod=0; //
else lod=1; end //结束本进程
always @(negedge lod ) //LOD下降沿执行本alway下面的语句
begin qc=qc+1; //得到qc的值
case (qc) //执行CASE语句
0 :begin qa='h19;d='b001100001100;end //qc=0
1 :begin qa='h03;d='b010100010100;end //qc=1
2 :begin qa='h09;d='b100001100001;end //qc=2
3 :begin qa='h03;d='b100010100010;end //qc=3
default :qa='h00; 其他值
endcase //结束case
end //结束本进程
endmodule //结束模块

摘 要计算机组成与结构实验课程是计算机专业以及相关专业学生要学习的一门必修课程,在这门课程中应用EDA技术进行教学,不仅能加深学生对计算机组成与结构课程的理解,也将有利于提高学生进行自主学习的能力以及创新的综合设计能力。正是符合了该课程的预期目的。
关键词计算机组成与结构;EDA技术;实验;应用
计算机及其相关专业的学生在学习过程中,除了要对理论知识加以了解,更重要的是要提升自己的动手能力。计算机组成与结构实验教学,就是计算机专业学生的必修课,通过课程设计把理论知识运用到实践中,可以起到拓展知识的作用。
一、EDA技术概述
EDA也就是电子设计自动化,EDA技术的发展经历了计算机辅助设计、计算机辅助制造、计算机辅助测试以及计算机辅助工程。EDA技术的工具就是计算机,在EDA软件平台上,设计者常常用硬件描述语言HDL来完成具体的课程设计文件,然后再在计算机平台上自动完成逻辑编译、分割、优化、布局、仿真等多个步骤。
EDA技术最大的优势在于用软件的方法来实现硬件的实际功效。一项设计最重要的部分是仿真和调试,采用EDA技术进行设计时,从设计的高层次上对设计进行全局纵览,有助于早期改造结构设计上的毛病,避免工作量的增加,也可以减少进行逻辑功效仿真的工作量,增加设计的成功率。
二、将EDA技术应用于计算机组成与结构课程设计
计算机是一个典型的复杂数字系统,如果在计算机设计系统开发中加入EDA技术的软硬件设计平台,不仅可以提高系统设计与调试的敛率,也可以节约硬件开发成本,缩短设计周期。因此在计算机组成与结构的实践教学中,要不断提高学生利用现代化的电子技术手段进行设计的能力。当然,EDA技术将成为计算机组成与结构实验教学的发展方向。
(一)课程的实施方案
课程设计是要完成模型计算机的设计以及FPGA的实现,而课程实验则是用来验证计算机的各个组成部件以及其具体的逻辑功能的。这两种课程内容都是为了让学生能够掌握计算机的硬件系统中各个部件的具体组成原理、逻辑实现方法及其具体的设计方法,从而建立一种整体的概念,提高学生在学习过程中进行独立分析设计的能力。计算机组成与结构的课程设计中运用了多门课程,比如计算机组成原理、VHDL、汇编语言程序设计等,这些课程都能对学生的自学能力有很好的提高。因为该课程设计不仅在理论上要求学生有扎实的理论基础,在实践上则要求学生具有电路分析与设计、能进行完整实验的能力。
(二)课程设计的内容
计算机组成与结构实验教学中,进行课程设计的内容主要有以下几个方面。首先是进行系统的总体设计,画出模型机的数据通路框图;其次是设计微程序控制器或者硬联线控制器的逻辑结构框图;开始设计机器指令格式和指令系统;由给出的课程题目和设计指令系统来编写相应的汇编语言,进行仿真等。
三、将EDA技术应用于计算机组成与结构课程实验
进行课程设计之后就可以进行具体的课程实践。在进行课程实践之前,要掌握具体的设计方法。计算机的CPU包含基本的功能模块以及与基本功能模块相连的数据通路。在进行课程设计实践时要掌握基本功能模块的具体功能以及各自的特点,再对每个模块进行设计、调试、软件仿真和硬件设计等。计算机组成与结构课程设计实验中采用的CPU采用大多是单总线系统结构的16位CISC CPU,EDA软件大多是可编程逻辑器件设计工具软件。
(一)基本模犁计算机的设计
在具体的课程设计中,为了保证清晰的系统结构,一般在系统的顶层结构采用原理图输入法,而在其他的模块都采用VHDL语言进行设计。对各个模块进行处理时要在文本编辑器中输入每一个单元模块所对应的VHDL源程序,并且要对各个源程序进行编译,可以产生相应的图元,供顶层的电路调用使用。各个模块的图元可以生成图元库,运用EDA技术进行实验课程,很重要的一步就是要进行软件仿真,而仿真的元器件就来源于图元库。在图形编辑器中可以对图元库中的各种图元进行调用,再根据数据通路的总体框架图连接成顶层电路图,就可以进行电路的仿真。计算机组成与结构实验所设计的CISC模型机的顶层电路图中有很多基本器件模块,比如时序信号发生器、程序计数器、算术逻辑运算单元、移位寄存器、指令寄存器、比较器、地址寄存器、一个控制单元等。而这些模块也共用一组16位的三态数据总线。
系统结构中的存储模块是一个重要的组成部分,存储元件由嵌入式阵列块构成,通过调用宏模块并设置模块相关的参数来实现存储功能。系统的各个部分都承担了不同的功能,其中,存储CPU主要是对指令和数据进行执行,具体的过程是处理器从存储元件中读取相应的指令,CPU再执行指令来运行下行的各种程序,整个过程中的指令都被存储在指令寄存器中。译码过程由控制单元完成,控制单元主要是控制相应的信号进行相互作用,并且控制各个处理单元来执行这些指令。
系统结构中的控制模块其实是一个状态机,它主要控制CPU的各项动作之间的顺序,比如取指令、译码、执行指令,控制模块进行 *** 作时要针对各个动作发出具体的时序控制信号,使得计算机内部的各个动作都能进行协调的工作,进而完成各个指令的具体功能。这种方法与微程序设计方法不同,微程序设计法主要在控制存储器中写入微指令,通过控制微程序来执行具体的控制指令。
(二)软件设计
当系统CPU得到一个复位信号后,系统即开始进行复制 *** 作,复位信号是使CPU内部状态复位的一个信号 *** 作。一般说来,系统的每个寄存器都有不同的功能,寄存器1主要存放模块的的起始地址,寄存器2主要存放系统目标区的起始地址,而寄存器6则主要存放被复制模块的末地址。在具体的 *** 作过程中要判断数据模块的复制工作是否已经结束,若已经满足结束条件则可以停止运行,否则要继续记数直至数据模块复制完成。
将设计的程序输入并且进行编译之后,还有一个重要的步骤就是仿真,仿真也是对设计进行验证的一个重要步骤,若在仿真中发现不符合要求的地方,则要及时找出原因进行改正,以保证最终结果的正确性。
结语
计算机组成与结构课程是锻炼学生积极思考以及提升其思维能力的重要课程,不同的设计对象和内容导致设计的具体内容完全不同,这也考验了学生独立思考的能力,由于EDA技术与计算机输入技术、逻辑编程和仿真等方面都有紧密的联系,而且在硬件实验之后有具体的图像可以进行对比,因此在实验教学中具有很好的灵活性和可 *** 作性。也能提高学生进行软件开发的能力,可以达到课程设计的效果。
参考文献
[1]陈智勇计算机原理课程设计的改革与实践[J]电气电子教学学报,2005,27(5):71—73
[2]周华,王斐EDA技术的特点与发展趋势[J]西安航空技术高等专科学校学报,2009(03):98-99
[3]张亮应用EDA技术改革“计算机组成原理”课程设计[J]计算机教育,2009(19)::753

1、基本要求:能利用现有的硬件系统设计一个至少能显示分、秒的控制电路。分和秒均用两位数码管指示,并具有调时、复位功能;
2、扩展要求:能同时显示小时(两位数码管)并能调节小时功能;具有闹钟定时功能。
3、设计方法:采用模块化描述方法,可分为分频模块、调时控制模块、数码显示模块、复位等模块,每个模块既可以编辑成独立的HDL文件或GDF文件,也可以作为HDL程序中的一个进程模块,最后进行系统仿真加以验证,在此基础上下载到硬件上进行现场测试。
4、输入、输出端口描述:输入信号——时钟信号clk、复位信号clr、时间设置键set、时间上调键tup、时间下调键tdown;输出信号——扫描式七段数码管段选输出端led[70]、位选输出端ctrlbit[30]。
我来帮他解答
2011-6-1 17:06
满意回答
设计原理
计数时钟由模为60的秒计数器模块、模为60的分计数模块、模为24的小时计数器模块、指示灯与报警器的模块、分/小时设定模块及输出显示模块等组成。秒计数器模块的进位输出为分计数器模块的进位输入,分计数器模块的进位输出为小时计数器模块的进位输入。其中秒计数器模块中应有分钟的设定,分计数器模块中应有小时的设定。
内容
设计一个计数时钟,使其具有24小时计数功能。通过“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意引线插孔可设置小时和分钟的值,并具有整点报时的功能。
电路原理图
模块说明:计数时钟由60秒计数器模块XSECOND、60分计数器模块XMINUTE、24小时计数器模块XHOUR等六个模块构成。秒计数器模块的进位输出为分计数器模块的进位输入,分计数器模块中有小时的设定。通过SW1、SW2、SW3、SW4可设定小时和分钟的值,并具有整点报时的功能。
输入信号:SETMIN为分钟设置信号;SETHOUR为小时设置信号;RESET为全局复位信号;CLK为全局时钟信号;CKDSP为数码管动态扫描信号。
输出信号:SPEAK为蜂鸣器报时信号;LAMP[20]为指示灯信号;A~G为数码管七个段位信号;SS[20]为数码管段位译码控制信号。
说明与电路连线
指示灯信号LAMP2~LAMP0为独立扩展下载板上CPLD器件的第11、10、9脚,内部已连接并已锁定,无需外接连线。
蜂鸣器报时信号SPEAK为独立扩展下载板CPLD器件的第31脚,内部已连接并已锁定,无需外接连线。
拨码开关SW1~SW7内部已连接并已锁定,无需外接连线。
数码管七个段位信号A~G为独立扩展下载板上CPLD器件的第86、87、88、89、90、92、93脚,应接数码管段位引线接线组KPL_AH,从左到右依次对应的A、B、C、D、E、F、G引线插孔。
数码管段位译码控制信号SS0、SS1、SS2为独立扩展下载板上CPLD器件的第68、69、70脚,为数码管的位选扫描信号,分别接信号接线组DS1-8A(T)的SS0、SS1、SS2引线插孔(即在电源引线插孔组GND孔处)。
复位信号RESET为独立扩展下载板上CPLD器件的第71脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
小时设置信号SETHOUR为独立扩展下载板CPLD器件的第73脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
分钟设置信号SETMIN为独立扩展下载板上CPLD器件的第74脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
时钟信号CLK为独立扩展下载板上CPLD器件的183脚(即GCLK2),应接时钟信号接线组“CLOCK(T)”的“FRQ(21)”引线插孔。
数码管动态扫描信号CKDSP为独立扩展下载板上CPLD器件的79脚(即GCLK1),应接时钟信号接线组“CLOCK(T)”的“FRQ(11)”引线插孔。
参考源程序
library IEEE;
use IEEEstd_logic_1164all;
use ieeestd_logic_unsignedall;
use ieeestd_logic_arithall;
entity xsecond is
port (
clk: in STD_LOGIC;
clkset: in STD_LOGIC;
setmin: in STD_LOGIC;
reset: in STD_LOGIC;
secout: out STD_LOGIC_VECTOR (6 downto 0);
enmin: out STD_LOGIC
);
end xsecond;
architecture xsecond_arch of xsecond is
signal sec : std_logic_vector(6 downto 0);
signal emin : std_logic;
signal sec1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,sec,emin,setmin,clkset)
begin
if reset='0' then
enmin<='0';
secout<="0000000";
sec1<='1';
else
sec1<='0';
secout<=sec;
if clkset='1' and clkset'event then
if setmin='0' then
enmin<='1';
else
enmin<=emin;
end if;
end if;
end if;
end process;
process(clk,sec1)
alias lcount : std_logic_vector(3 downto 0) is sec(3 downto 0);
alias hcount : std_logic_vector(2 downto 0) is sec(6 downto 4);
begin
if sec1='1' then
sec<="0000000";
else
if (clk='1' and clk'event) then
if lcount=9 then
lcount<="0000";
if hcount/=5 then
hcount<=hcount+1;
emin<='0';
else
hcount<="000";
emin<='1';
end if;
else
lcount<=lcount+1;
emin<='0';
end if;
end if;
end if;
end process;
end xsecond_arch;
library IEEE;
use IEEEstd_logic_1164all;
use ieeestd_logic_unsignedall;
use ieeestd_logic_arithall;
entity xminute is
port (
clkmin: in STD_LOGIC;
reset: in STD_LOGIC;
sethour: in STD_LOGIC;
clk: in STD_LOGIC;
minout: out STD_LOGIC_VECTOR (6 downto 0);
enhour: out STD_LOGIC
);
end xminute;
architecture xminute_arch of xminute is
signal min : std_logic_vector(6 downto 0);
signal ehour : std_logic;
signal min1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,clk,sethour,min,ehour)
begin
if reset='0' then
enhour<='0';
minout<="0000000";
min1<='0';
else
min1<='1';
minout<=min;
if clk='1' and clk'event then
if sethour='0' then
enhour<='1';
else
enhour<=ehour;
end if;
end if;
end if;
end process;
process(clkmin,min1)
alias lcountm : std_logic_vector(3 downto 0) is min(3 downto 0);
alias hcountm : std_logic_vector(2 downto 0) is min(6 downto 4);
begin
if min1='0' then
min<="0000000";
else
if (clkmin='1' and clkmin'event) then
if lcountm=9 then
lcountm<="0000";
if hcountm/=5 then
hcountm<=hcountm+1;
ehour<='0';
else
hcountm<="000";
ehour<='1';
end if;
else
lcountm<=lcountm+1;
ehour<='0';
end if;
end if;
end if;
end process;
end xminute_arch;
library IEEE;
use IEEEstd_logic_1164all;
use ieeestd_logic_unsignedall;
use ieeestd_logic_arithall;
entity xhour is
port (
clkhour: in STD_LOGIC;
reset: in STD_LOGIC;
hourout: out STD_LOGIC_VECTOR (5 downto 0)
);
end xhour;
architecture xhour_arch of xhour is
signal hour : std_logic_vector(5 downto 0);
begin
-- <<enter your statements here>>
process(reset,clkhour,hour)
alias lcount : std_logic_vector(3 downto 0) is hour(3 downto 0);
alias hcount : std_logic_vector(1 downto 0) is hour(5 downto 4);
begin
if reset='0' then
hourout<="000000";
hour<="000000";
else
if (clkhour='1' and clkhour'event) then
if lcount=9 then
lcount<="0000";
hcount<=hcount+1;
else
if hour="100011" then
hour<="000000";
else
lcount<=lcount+1;
end if;
end if;
end if;
hourout<=hour;
end if;
end process;
end xhour_arch;
library IEEE;
use IEEEstd_logic_1164all;
use ieeestd_logic_unsignedall;
use ieeestd_logic_arithall;
entity xalert is
port (
clk: in STD_LOGIC;
d_in: in STD_LOGIC_VECTOR (6 downto 0);
speak: out STD_LOGIC;
d_out: out STD_LOGIC_VECTOR (2 downto 0)
);
end xalert;
architecture xalert_arch of xalert is
type state is (s1,s2,s3,s4);
signal next_state,current_state : state;
begin
-- <<enter your statements here>>
process(clk,current_state,d_in)
begin
if d_in/="0000000" then
speak<='0';
next_state<=s1;
current_state<=s1;
d_out<="000";
else
if clk='1' and clk'event then
speak<='1';
current_state<=next_state;
end if;
case current_state is
when s1 =>
d_out<="000";
next_state<=s2;
when s2 =>
d_out<="001";
next_state<=s3;
when s3 =>
d_out<="010";
next_state<=s4;
when s4 =>
d_out<="100";
next_state<=s1;
when others =>
d_out<="000";
null;
end case;
end if;
end process;
end xalert_arch;
library IEEE;
use IEEEstd_logic_1164all;
use ieeestd_logic_unsignedall;
use ieeestd_logic_arithall;
entity xsettime is
port (
hour: in STD_LOGIC_VECTOR (5 downto 0);
min: in STD_LOGIC_VECTOR (6 downto 0);
sec: in STD_LOGIC_VECTOR (6 downto 0);
reset: in STD_LOGIC;
clk: in STD_LOGIC;
sel: out STD_LOGIC_VECTOR (2 downto 0);
d_out: out STD_LOGIC_VECTOR (3 downto 0)
);
end xsettime;
architecture xsettime_arch of xsettime is
signal sel1 : std_logic_vector(2 downto 0);
begin
-- <<enter your statements here>>
process(clk,reset,sel1,hour,min,sec)
begin
if reset='0' then
sel<="000";
d_out<="0000";
sel1<="000";
else
if (clk='1' and clk'event) then
if sel1<5 then
sel1<=sel1+1;
else
sel1<="000";
end if;
end if;
sel<=sel1;
case sel1 is
when "000" =>
d_out(3)<='0';
d_out(2)<='0';
d_out(1)<=hour(5);
d_out(0)<=hour(4);
when "001" =>
d_out<=hour(3 downto 0);
when "010" =>
d_out(3)<='0';
d_out(2)<=min(6);
d_out(1)<=min(5);
d_out(0)<=min(4);
when "011" =>
d_out<=min(3 downto 0);
when "100" =>
d_out(3)<='0';
d_out(2)<=sec(6);
d_out(1)<=sec(5);
d_out(0)<=sec(4);
when "101" =>
d_out<=sec(3 downto 0);
when others =>
null;
end case;
end if;
end process;
end xsettime_arch;
library IEEE;
use IEEEstd_logic_1164all;
entity xdeled is
port (
d_in: in STD_LOGIC_VECTOR (3 downto 0);
a: out STD_LOGIC;
b: out STD_LOGIC;
c: out STD_LOGIC;
d: out STD_LOGIC;
e: out STD_LOGIC;
f: out STD_LOGIC;
g: out STD_LOGIC
);
end xdeled;
才五分啊,太少了吧
哥刚copy的

quartus II里的file目录下creat/update,然后 creat symbol files for current file可以生成模块,然后新建一个bdf文件,双击空白处,会跳出对话框,加入你要的模块即可。
EDA设计有很多模块 如何将各模块整合起来 仿出?这个问题应该是你的程序只有子模块,没有顶层模块,写一个顶层模块,就可以整合起来仿真了

分类: 教育/科学 >> 科学技术 >> 工程技术科学
解析:

FPGA 简介

FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:

1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 ——2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

PLD介绍

可编程逻辑器件PLD(Programable Logic Device)是允许用户编程(配置)实现所需逻辑功能的电路, 它与分立元件相比,具有速度快、容量大、功耗小和可靠性高等优点。由于集成度高,设计方法先进、现场可编程,可以设计各种数字电路,因此,在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域内得到了广泛应用。不久的将来将全部取代分立数字元件,目前一些数字集成电路生产厂商已经停止了分立数字集成电路的生产。因此应该学会PLD的设计技术。

PLD电路早期代表产品由XLINX公司推出的门阵列,称为FPGA(Field Programable Gate Array),随后ALTERA公司推出以并行走线的PLD产品,称为CPLD(Complex Programable Logic Device),这些早期产品价格高达万元,其开发软件价格高达几十万元。但是随着生产技术水平的提高,现在PLD产品的价格已大大降低,一片5000门、具有5K X 8的SRAM电路作配置、84脚封装、速度达40—200MHz的PLD的价格已经下降到一百元以下。每一片这样的PLD可以设计成单片机、或者是CPU等,并且可以在外部接线完成以后还可以重新进行设计多次。

目前在我国常见的PLD生产厂家有XILINX、ALTERA、ACTEL、LATTIC、ATMEL、MICROCHIP和AMD等等,其中XILINX和ALTERA为两个主要生产厂,XILINX的产品为FPGA,ALTERA的产品称为CPLD,各有优缺点,

但比较起来ALTERA的产品略有长处:

1. 同样具有EPROM和SRAM的结构

2. 对于SRAM结构的产品,ALTERA公司PLD的输出电流可达25MA,而XILINX的FPGA只有16MA

3. ALTERA公司的PLD延时时间可预测,弥补了FPGA的缺点

4. XILINX公司的开发软件FOUNDATION 功能全,但是不如ALTERA公司的MAX+PLUS软件使用简单,特别是对于学校的学生学习VHDL语言和PLD设计。

5. ALTERA公司的产品价格稍微便宜

6. ALTERA公司新推出的FLEX 10K10E系列的产品具有更大的集成度

PLD的结构分为两类:

l 逻辑单元阵列(LCA),包括逻辑快、互连阵列和I/O块

l 复合PLD结构,包括逻辑块和互连矩阵开关

XLINIX、ACTEL公司的产品采用LCA结构,而ALTERA、AMD的MACH系列采用的是复合PLD结构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12607727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存