FPGA常识

1 、wire型和reg型
        wire网线型表示硬件单元之间的连线,值由驱动单元决定,缺省值是高阻值z。模块的输入输出信号数据类型默认为wire型。
        reg寄存器型表示一个抽象的数据储存单元,只能在always和initial语句中用<=赋值,缺省值是不定值x。


2 、连续赋值和过程赋值
        连续赋值常以assign为关键词,用"="赋值,赋值的对象是wire型用于驱动wire网线,assign不能出现在always和initial语句中。
示例:assign c=sel?a:b;  assign c={a,b};
        过程赋值只能出现在initial和always语句中,用"="和"<="赋值,赋值的对象是reg型用于驱动reg寄存器,过程赋值又分为阻塞赋值和非阻塞赋值。


3 、阻塞赋值和非阻塞赋值
        首先要知道在同一个always里不能既用非阻塞赋值又用阻塞赋值。不能在两个不同的always语句块中对同一个变量赋值。
        阻塞赋值操作符是"=",赋值语句在句块中按顺序依次赋值,一条赋值语句执行完成等式左边的值立刻改变,下一条赋值语句只能等当前赋值语句执行完成才能执行。
假设初始值A=1,B=3
always@(posedge clk)
begin
    B=A;
    C=B+1;
end
这个语句块执行一次后的结果为B=1,C=2

        非阻塞赋值操作符是"<=",非阻塞赋值首先计算语句块中所有赋值语句等式右边表达式的值,然后等always语句块结束再同时对所有赋值语句左边寄存器变量进行赋值。
假设初始值A=1,B=3
always@(posedge clk)
begin
    B<=A;
    C<=B+1;
end
这个语句块执行一次后的结果为B=1,C=4


4 、二进制码与BCD码、格雷码
        BCD码用4位二进制数来表示1位十进制数。
        格雷码又叫循环二进制码,在一组格雷码中任意两个相邻的格雷码只有一位二进制数不同。
二进制转换为格雷码的规则:(从低位开始)格雷码的第n位等于二进制码第n+1位与第n位的异或,最高位不变。


5、同步电路和异步电路

        同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,这些时序电路共享同一个时钟CLK,所有的状态变化都是在时钟的上升沿(或下降沿)完成的。

        异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,其逻辑输出与任何时钟信号都没有关系。

异步信号同步的方法:

(1)使用保持寄存器和握手信号

(2)使用异步FIFO和DPRAM

(3)使用两级触发器级联构成同步器


6、同步复位和异步复位电路

        同步复位电路中,只有当时钟沿到来时复位有效,才能处理复位信号相关逻辑行为。

示例:

always@(posedge clk)

begin

    if(reset==1) a<=0;

    else a<=a+1;

end

reset信号只有在clk的上升沿到来时有效才对能a信号复位

        异步复位电路中,无论时钟沿是否到来,复位有效立即处理复位信号相关逻辑行为。

示例:

always@(posedge clk or posedge reset)

begin

    if(reset==1) a<=0;

    else a<=a+1;

end

reset信号有效即上升沿到来时立刻对a信号复位。


7、组合逻辑和时序逻辑

        组合逻辑:其特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理,一般采用阻塞赋值,常见的描述方式有:

(1)always@(电平敏感信号)//这里提一下组合逻辑阻塞赋值应当是wire型的,但为了满足"always语句块里面信号必须要定义成reg型"的语法要求,所以这里的赋值信号定义为reg型,不过在always会自动变回wire型。

示例:

input a,b;

output c;

reg c;

always@(a,b)

begin

        if(a>b) c=a;

        else c=b;

end

(2)assign语句

        时序逻辑:其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。电路里面有储存元件,输入信号的变化必须要在时钟边沿触发时才能引起输出信号变化。一般使用非阻塞赋值,常见的描述方式有: always@( posedge clk)


8、基于EDA(电子设计自动化)的FPGA设计流程:

        原理图/HDL文本输入→功能仿真(前仿真)→综合→适配(布局布线)→时序仿真(后仿真)→编程下载→测试

        综合就是将HDL描述的寄存器传输级电路转化为门级网表的过程。

        实现implement是指将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语。

功能仿真和时序仿真:

        都能检验系统的设计是否完成。功能仿真用于验证设计的逻辑功能,不包含延时信息;时序仿真是在完成布局、布线之后进行的快速时序检验, 包含了器件的硬件特性参数和内部连线时延。


9、IP核的分类

        IP核分为硬核、固核和软核三种有效形式。

硬核:经验证的具有特定电路功能的继承电路版图。优点:确保性能。缺点:不能更改。

固核:带有平面规划信息的网表。优点缺点介于硬核和软核之间。

软核:以可综合的寄存器传输级(RTL)描述或通用库元件的网表形式提供咳咳重复使用的IP模块。优点:易于重定目标和重配置。缺点:不能确保性能。


10、FPGA和CPLD

        FPGA是基于SRAM查找表的可编程逻辑器件。掉电后芯片内信息丢失,一般数字系统会配备一个PROM、E2PROM或FlashPROM,掉电后由器件外部将编程数据重新写入SRAM中,从而避免芯片掉电后信息丢失。FPGA内部结构组成部分一般分为三部分:可编程逻辑块(CLB) 、可编程I/0模块(IOB)和可编程内部连线。

        CPLD是基于EEPROM乘积相的可编程逻辑器件。

CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。


11、编程与配置

把基于SRAM查找表结构的FPGA的下载称为配置。

把基于电可擦除存储单元的E2PROM或FLASH技术的CPLD的在系统下载称为编程


12、FPGA配置方模式

FPGA配置分为:从动串行模式、从动并行模式、主动串行、主动并行、JTAG模式。

(1)从动串行(SS)模式:通过异步串行微处理器实现配置;

(2)从动并行(SPS)模式:通过并行的微处理器实现配置;

(3)主动串行(MS)模式:通过FPGA控制串行配置芯片实现自身配置;

(4)主动并行(MS)模式:通过FPGA控制并行配置芯片实现自身配置;

(5)JTAG模式:通过IEEE的标准JTAG引脚实现配置。

主动配置由可编程器件引导配置过程,从动配置则由外部处理器控制配置过程。


13、面积优化和速度优化
        面积优化主要考虑提高资源利用率减少功耗。主要有资源共享,逻辑优化,串行化和寄存器配平法
        速度优化主要考虑提高运行速度。主要有流水线设计和关键路径法


14、SOC和SOPC

        SOC就是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)、数据通路、与外部系统的数据接口等部件集成在单一芯片上。

        SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术,SOC解决方案。SOPC与SOC的区别就是FPGA与ASIC的区别。

        SOPC的技术优势:(1)运用嵌入的微处理器软核; (2)采用先进的EDA开发工具;(3)由于连接延迟时间的缩短,SOPC可以提供增强的性能,而且由于封装体积的减小,产品尺寸也减小。

        FPGA的优势:(1)功耗低;(2)可自定义;(3)管脚多;(4)延时低;(5)可实现高度并行化运算;(6)可实现流水线并行;


常见名词缩写

FPGA Field—Programmable Gate Array 现场可编程门阵列

VHDL Very-High-Speed Integrated Circuit Hardware Description Language ) 超高速集成电路硬件描述语言

HDL Hardware Description Language 硬件描述语言

CPLD Complex Programmable Logic Device 复杂可编程逻辑器件

PLD Programmable Logic Device 可编程逻辑器件

GAL generic array logic 通用阵列逻辑

LAB Logic Array Block 逻辑阵列块

CLB Configurable Logic Block 可配置逻辑模块

EAB Embedded Array Block 嵌入式阵列块

SOPC System-on-a-Programmable-Chip可编程片上系统

LUT Look-Up Table 查找表

13.JTAG Joint Test Action Group 联合测试行为组织

IP Intellectual Property 知识产权

ASICApplication Specific Integrated Circuits专用集成电路

ISP In System Programmable 在系统可编程

ICR In Circuit Re-config 在电路可重构

RTL Register Transfer Level 寄存器传输级

EDA Electronic Design Automation 电子设计自动化

猜你喜欢

转载自blog.csdn.net/spartan6/article/details/121325398