模块输入是时钟和复位,输出为
模块图转化成Verilog code
声明模块,用module来声明,之后写输入输出列表。输入只能是wire,因为只有线性才能接入。
output可以wire,也可以是reg。
最小逻辑单元 slice,一个slice上有多少个lut,
FPGA内部最主要的、最需要关注的部件是CLB(Configurable Logic Block,可配置逻辑块)、Input/Output Block(输入/输出块)和BlockRAM(块RAM)。
CLB是FPGA具有可编程能力的主要承担者。通过配置这些CLB可以让FPGA实现各种不同的逻辑功能。Input/Output Block分布在FPGA的周边,也具有可编程特性,可以配置支持各种不同的接口标准,如LVTTL、LVCMOS、PCI和LVDS等。BlockRAM是成块的RAM,可以在设计中用于存储数据,是设计的重要资源。在大规模设计选择FPGA时,RAM资源是否够用是重要的考虑因素。
Xilinx Virtex-5 FPGA的一个CLB包含两个Slice。Slice内部包含4个LUT(查找表)、4个触发器、多路开关及进位链等资源。部分Slice还包括分布式RAM和32bit移位寄存器,这种Slice称为SLICEM,其他Slice称为SLICEL。
CLB内部的两个Slice是相互独立的,各自分别连接开关阵列(Switch Matrix),以便与通用布线阵列(General routing Matrix)相连。
查找表类似于一个ROM,容量是64bit,6个输入作为地址输入,存储的内容作为布尔运算的结果。查找表中的内容由ISE生成并在FPGA配置时加载进去。
Slice中的触发器可以配置成多种工作方式,例如是FF或Latch,同步复位或异步复位、复位高有效或低有效等。
CLB内部包含多个选择器。CLB的选择器与一般的选择器不同,它们没有选择端。通路的选择在FPGA配置后固定下来。
CLB内部还包含了一个重要的资源——进位链,其作用是方便加法器的实现。
FPGA时序分析是ic的一个缩略版
时序面对的是寄存器与寄存器之间时钟信号和数据的相位关系,评判标准:一个是建立时间余量,另一个是保持时间的余量。
在时序中,D触发器数据输出一定在是时钟沿后边在输出出去。原因是触发器的内不是有延时的.
时钟路径和数据路径,期间差值就是相位关系。从时钟到
可以通过分时复用的方法来减少结构的面积。并串转换单元控制数据按照时钟节拍进入累加器,累加器完成计算
数字逻辑设计:查找表,时分复用和流水线
在输入规模较大的情况下,表是非常复杂的,尹慈师很多材料不建议采用的原因。
查找表的Verilog的表达一般是case这个关键词,另一种产生方法利用RAM完成,具体为用输入组成{ ···,in1,in0}作为RAM的地址,把这些输入的输出作为值储存作为值存在RAM里面。这样,读对应的地址就能得到对应输出。一些基于SRAM的FPGA的内部,采用的就是查找表实现的组合逻辑。
时分复用的基本思想:对于一些需要处理速度比较慢的,有重复运算单元,可以在接受的建立时间内,多次重复利用有关的运算器件,以达到减少整个单元面积的目的。
快速反应流水线:主要思想是把一个操作分成多个步骤,每个时钟节拍做一个步骤。对于单个数据,经过N个步骤之后,获得最终的结果。流水线也是用面积和建立时延换系统工作频率和数据流速度的一种实现方式。