**1. **可编程逻辑功能块
可编程逻辑功能块(configurable logic blocks, clb),顾名思义就是可编程的数字逻辑电路,可以实现各种逻辑功能。
clb是fpga根据用户需求构建各种数字电路的核心模块,它是fpga实现组合逻辑和时序逻辑电路的主要逻辑资源。同时,clb也是fpga芯片中利用率最高,占用面积最大的逻辑资源模块,它的作用犹如人体中最基本的细胞单元。
lut也即我们常说的查找表,是clb的主要功能模块,这点由clb名字的全称(可配置逻辑功能块)就可以知道了。通过一个n输入的lut可以实现任意n个变量的组合逻辑。为方便理解,我们以3输入lut为例加以说明。
fig1. lut3原理图
图中m0-m7为查找表的配置存储器(即存储单元),通过编程下载将数据写入这个8个存储单元;输出out则根据a、b、c的值选择m0-m7的值。cba=000时选择m0的值,cba=001时选择m1的值,以此类推,cba=111时就选择m7,这样就构成了一个look up table,也就可以通过写入m0-m7适当的值来实现abc的任意逻辑。
例如想要实现函数out1=c⊕b⊕a或函数out2=a&b+c,它们的真值表如下表1所示,所以只需要使m0-m7的值为01101001就可以实现函数out1的功能;只需要使m0-m7的值为00011111就可以实现函数out2的功能。6输入查找表原理一样。
表1 函数out1和out2的真值表
**2. **工程验证
2.1 建立vivado****工程
用vivado软件编写verilog代码实现y = a & b + c,如下:
生成的bitstream(文件路径:工程名路径/工程名/工程名.runs/impl_1/工程名.rbt),如下(部分):
上述bitstream绝大部分会存储到fpga的memory cell中,也就是图1中m7-m0的数据源。图1中的a、b、c和out来自fpga的io,由用户指定。其中a、b、c和out对应代码中的a、b、c和y。图2是vivado自动布局布线出来的y = a & b + c,可以看出仅占用了fpga的一个lut6资源。
fig2. y = a & b + c 软件视图
2.2解析bitstream
下载到图2中lut6的memory值是否是我们想要的呢?这就需要我们对bit流进程解析。
我们直接给出此lut6占用的memory cell值及位置,如下:
其中frame表示一帧数据,共101个word,一个word表示32个memory cell,因此一个frame表示101 x 32 = 3232个memory cell。
由第1章知识,可知一个lut6需要2^6=64个memory cell,即上图灰色部分(16 x 4 = 64)。
**2.3 **分析验证
为便于分析我们把2.2节中frame:104/105/106/107 word:0的低16位取出放到表格里构成16x4的一个矩阵,如下:
转换成64x1矩阵(转换关系由内部电路决定,这里直接给出),如下:
这里与表1呼应,至此我们工程化验证了y = a & b + c,你理解了吗?
**3. **思考与讨论
bitstream是如何烧写到fpga芯片中的?如何利用clb实现时序逻辑?fpga内部时钟架构是什么样的?fpga电源是如何划分的?
5G产业崛起势必将对星河精密发展带来巨大积极推动作用
2020年前三季度中国企业专利授权量排名TOP3
一种柔韧且可拉伸的无线感知系统
英创信息技术EM9280 Linux触摸屏应用开发简介
新型农药残留快速检测仪
FPGA中的逻辑运算是如何实现的?
长安蓝鲸发动机挑战吉尼斯纪录:连续10天,不低于200小时的极限运行测试
热电阻的引出线方式有几种?都有什么影响?
带功放的手机支架diy
所有这些干扰是怎么回事?
容器的优势是什么?和虚拟机有什么不一样?
VR市场目前人气火爆,但想要普及虚拟现实必须要先解决这个生理障碍
怎么测试开关电源的功率?具体流程是什么?
卷积神经网络图像识别_卷积神经网络的优势
海信迎来新挑战,LG电子向海信发起专利战
OFAC正在考虑在SDN列表中添加数字货币地址
“中国技术威胁”论正在发酵 特朗普被指需顾大局
RF电路原理图
边缘计算在车路协同中的应用分析
辊压机轴颈磨损的修复方法