单片机应用:
日常应用广泛,多用于控制流水灯。
FPGA应用:
(1) 通信接口设计、数字信号处理等比较需要处理的数据量比较大、需要处理速度特别快或精度特别高的场合。
(2) ASIC原型验证。
FPGA通过烧写文件去配置查找表,从而在相同的电路情况下实现不同的逻辑功能。
1、并行模式: 并行PROM、Flash配置FPGA;
2、主从模式: 一片PROM配置多片FPGA;
3、串行模式: 串行PROM配置FPGA;
4、外设模式: 将FPGA作为微处理器的外设,由微处理器对其编程;
综合优化到时序优化的过程由仿真平台进行完成。
(1)根据待设计的项目,进行系统设计方案论证:
需要进行系统功能定义、模块划分
(2) 根据任务要求,对工作速度和器件本身的资源、成本、以及连线的可布性进行权衡,选择合适的设计方案和合适的期间类型。
采用的设计方法:
一般采用自顶向下的设计方法,把系统分成若干个基本单元,然后把每个基本单元划分为下一层级的基本单元,一直这样做下去,直到可以直接使用EDA单元。
HDL语言输入法: 利用文本描述语言,分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,用于简单的小型设计;行为HDL主流语言是Verilog HDL和VHDL,多用于中大型工程中。
原理图输入方法: 在可编程芯片发展的早起应用比较广泛,将所需的器件从元件库中调出来,画出原理图。直观并易于仿真,但效率很低,而且不易维护,不利于模块的构造和重用,可移植性差。
这一步就是用硬件语言去描述待设计电路的功能。
例如设计一个比赛裁判判决器
两个副裁判一个主裁判,主裁判与其中一到两个副裁判按下灯亮,主裁判不按下灯不亮
代码如下:
module work_1(
input x,
input y,
input z,//main
output led
);
assign led = (x|y)&z;
编写仿真文件:
`timescale 1ns / 1ps
module test_1();
reg x;
reg y;
reg z;
wire led;
work_1 work(
.x (x ),
.y (y ),
.z (z ),
.led (led)
);
initial
begin
y=0;
#200 y=1;
#400 y=0;
end
initial
begin
x=0;
#100 x=1;
#300 x=0;
#500 x=0;
end
initial
begin
z=0;
#100 z=1;
#200 z=0;
#300 z=1;
#400 z=0;
end
endmodule
观察到仿真结果:
功能仿真: 也称为综合前仿真,实在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。
常用的工具: ModelSim,VCS,NC-Verilog,NC-VHDL等。
把代码变成电路的过程被称为综合。
综合优化 是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而非真实的门级电路。综合的结果得到的是一个硬件电路的设计方案。
常用的综合工具: Synpify以及各个FPGA厂家自己推出的综合开发工具。
经过综合,得到了所涉及的电路实现方案:
综合后仿真是对上一步的综合结果(代码便编程一个电路模型)进行仿真,检查是否实现了预期的功能。
布局布线 可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应的文件(如配置文件与相关报告),实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。
时序仿真: 也称为后仿真,是将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束或期间固有的时序规则,如建立时间、保持时间等)现象。
板级仿真 主要应用于高速电路设计中。对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。
芯片编程 是指将FPGA开发工具最后产生的数据文件(位数据流文件)加载到FPGA芯片中。如果上板之后发现功能不正确,尝尝采用逻辑分析仪进行调试。
FPGA开发入门准备: