V3学院1元培训班笔记(腾讯视频)

本文介绍了FPGA设计中优化时序的方法,如将查找表和寄存器约束在同一LE中以减少延迟,并避免在if语句后放置过多条件或位宽大的信号。同时,讲解了在Modelsim中读取内存数据的注意事项及查看task数据的步骤。此外,还对比了I2C和SCCB协议在读操作上的区别,指出SCCB在读取时多一个stop。
摘要由CSDN通过智能技术生成

V3学院1元培训班笔记(腾讯视频)

[2019-10-20 12:00]

1.如果时序出现一些问题,可以将查找表和寄存器约束在同一个LE里,这样其组合逻辑的路径会很短
Altera
LAB:逻辑阵列块 包含16个LE
在这里插入图片描述
在这里插入图片描述
LE: 查找表1 +寄存器1
在这里插入图片描述
我们写的if…else… 最终映射到查找表(以四输入查找表为例,可以写4个1bit条件)
得出的值 最终映射到寄存器中
如果我们写的if后面的位宽比较大或者条件较多,就会占用很多LUT,然后从LUT出来再到某一个寄存器,会有很多走线路径,延时比较大。

==> So 刘工不让我在if后面写太多的条件,不写太多位宽的东西
为什么建议if后面都写1bit信号,因为1bit信号会被综合布线到寄存器的使能端,而非经过LUT过来,减少延时,产生毛刺的概率小一些。
在这里插入图片描述
组合逻辑条件不全就会产生launch.
为什么FPGA不建议用Launch?因为其路径延时不确定
Launch是否是废物?在跨时钟域的时候有用,它与时钟无关,仅仅是通过电平将数据锁住.

======================
2.
// 读文件到tb文件
initial begin
$readmemh("./data.txt",mem);
End
注意,单独这样写是在modelsim的Memory List中看不到数据的,都是xx,是因为内部没有信号所致,故随便加上一个信号就行。
在这里插入图片描述
如何看task中的数据
#######################################
#看task里边的数据
add wave -divider {task gen data}
add wave s2p_tb/gen_data/*
#######################################
在moselsim的transcript中打或者在run.do中打即可
在这里插入图片描述

======================
3. 两个小技能需要学一下
注意传给下游的数据采集标志信号sync不要放在数据的第一拍,此时数据可能还未稳定,(要改掉以前的老习惯),需要放在数据的中间.
在这里插入图片描述
像下路每次shift_cnt0的时候要锁存shift_reg的数据,但考虑到一个个shift_cnt0.是不需要的,可以将cnt打一拍,用shift_cnt_dly == 7来采集。
在这里插入图片描述

======================
4.I2C和SCCB的区别
I2C:
在这里插入图片描述
SCCB:
在这里插入图片描述

==> 综上:SCCB的读比I2C的读多一个stop。

======================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ethan_WC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值