FPGA入门笔记一 RTL级设计与芯片的关联 - Go语言中文社区

FPGA入门笔记一 RTL级设计与芯片的关联


第一次写博客,同时也表示学习FPGA的决心。

学习的初步目标是能够驾驭XILINX XC7K325T,写点简单的程序,或者用起来别人的复杂代码。预期一个月。

从简单入手可能更容易理解,使用黑金开发板AX309,型号SPARTAN-6 XC6SLX9。


跑了几个程序之后,发现别人的程序越来越不好理解,在没有备注的情况下更难,于是想搞清楚写程序的逻辑是什么。看了很多关于说编写verilog与编写C语言思想完全不同的文章,verilog是一种硬件描述语言要时刻想到底层的电路,但是1、这个底层电路到底指的什么呢?2、与verilog之间的关系是什么呢?

RTL级,register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式;而Behavior级指的是仅仅描述电路的功能而可以采用任何verilog语法的描述方式。鉴于这个区别,RTL级描述的目标就是可综合,而行为级描述的目标就是实现特定的功能而没有可综合的限制。当然,RTL级描述也是采用的verilog,但是是verilog中的可综合子集。既然描述对象是寄存器,就要了解FPGA的基本组成了。

register transfer level

FPGA芯片主要由三部分组成,分别是IOE(input output element,输入输出单元)、LAB(logic array block,逻辑阵列块,对于Xilinx称之为可配置逻辑块CLB)和Interconnect(内部连接线)。

CLB包含了LUT(Look-Up-Table查找表)、触发器、相关逻辑。LUT(Look-Up-Table)其本质是一个静态存储器SRAM,目前FPGA多采用4输入的LUT,每个LUT可以看作一个有4位地址线的16x1的RAM。当我们通过原理图或HDL语言描述了一个逻辑电路后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。这样,在FPGA工作时,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。

不同型号芯片中的CLB不同,就要看Dadasheet了,下述是SPARTAN-6的。



LUT的结构图示意如下:


这些芯片属性的基础信息要了然于心,编程过程中要有所体味。到此也回答了文章开始的第一个问题。


Verilog编程(可综合子集,RTL级)的代码如何与电路建立联系就得从语言本身说起了,所谓硬件描述语言:就是指虽然是语言,但是形容的内容是硬件。比如reg相当于存储单元,wire相当于物理连线,and与门,or或门,bufif/notif带控制端的缓冲器/非门;每一个always语句或者assign语句都代表一条独立的电路,而这些电路都是always@(……)里面信号监控的,都是有实际意义的;从软件代码到实际硬件电路之间的桥梁就是综合。综合对verilog语言增加了一些约束,也就是RTL级。这时候再理解一下官方的定义:所谓综合 (Synthesize) 是指将 HDL 语言、原理图等设计输入翻译成由与、或、非门等基本逻辑单元组成的门级连接,并根据设计目标和要求优化所生成的逻辑连接,输出门级网表文件。

这样应该可以理解第二个问题了,但是貌似还少了些什么,就是根据什么编程呢?那就是功能设计。

一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用门或者连接线为止。要根据算法或者硬件的工作原理,内在逻辑认真分析行为模型,确定需要的寄存器类型和数量,再确定执行时序,状态机等,然后就是编程了。

具体RTL 设计步骤: 功能定义与模块划分;定义所有模块的接口; 设计时钟域; 考虑设计的关键路径; 顶层设计; FSM 设计; 时序逻辑设计; 组合逻辑设计。

常用的RTL建模: 阻塞赋值、非阻塞赋值和连续赋值; 寄存器电路建模; 组合逻辑建模; 双向端口与三态信号建模; Mux建模; 存储器建模; 简单的时钟分频电路; 串并转换建模; 同步复位与异步复位; case语句和if语句建模; 可综合的Verilog语法子集


引用:

1、FPGA组成、工作原理和开发流程 http://blog.csdn.net/loongembedded/article/details/7182900

2、RTL级设计 https://wenku.baidu.com/view/49e3e33a87c24028915fc363.html

3、DATASheet :Spartan-6 Family Overview 中文版 https://wenku.baidu.com/view/60d73684ec3a87c24028c4d9.html

4、DATASheet :Spartan-6 FPGA Configurable Logic Block User Guide 中文 https://wenku.baidu.com/view/e400a4576137ee06eff918a5.html



版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yangshoub/article/details/73921826
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 16:45:08
  • 阅读 ( 1247 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢