AMD FPGA设计优化宝典笔记(1)触发器

图片

高亚军老师的这本书《AMD FPGA设计优化宝典》,他主要讲了两个东西:
第一个东西是代码的良好风格;
第二个是设计收敛等的本质。

这个书的结构是一个总论,加上另外的9个优化,包含的有:时钟网络、组合逻辑、触发器、移位寄存器、存储器、乘加运算单元、状态机、扇出、布线拥塞。大部头的书看起来比较痛苦,我简化的方式,选择触发器一章入手,这个平时有点了解,也觉得看完会用上的概率大一些。

这章是第4章,开篇给我们看了7系列中的触发器资源,确实是一个 slice 模块里面有8个触发器,这8个触发器呢,4 个编号带A的这种是只可以做边沿触发,另外编号不带A的4个是既可以做边沿触发也可以作为电平敏感型的触发,但是只要有一个被当做电平敏感型也就是锁存器的话,另外那4个带 A 的就不能用了

确实每一个都会有 FPGA 电路的结构图,还有一个tcl代码,感觉讲的还是挺清楚的,知道的是有7系列是我常用的,然后更高深(更贵)的两种FPGA——UltraScale和Versal ACAP也做了初步的了解,这两种都是一个slice里面16个触发器,用法的花样更多,且SR有效极性是高低电平都可(7系列只能高电平)。

有个system Verilog代码4-4让我明白什么叫同步复位,(其实经常这么写只不过原来不是特别清楚这些概念),但是跟后面的异步复位相去对应的话就能一眼看出来了。还有一种是既无复位又无置位,其实就很简单,就是一个赋值。这一页代码在181页:

既无复位又无置位,其实就很简单,就是一个赋值:

always@(posedge clk)//这里只有clk
begin
q <= d;//不需要if else的条件,没有复位
end

同步复位:
always@( posedge clk)//这里只有clk
begin
if(rst) begin//这里有了复位,rst这个复位信号和clk是同步的
q <= 0;
end
else if(ce) begin
q <= d;// 可以有一个ce的判断,我感觉也可以没有
end
end

异步复位:
always@( posedge clk, posedge rst)//这里有clk有rst,它们是异步的
begin
if(rst) begin//q在复位情况清零,rst这个复位信号和clk是异步的
q <= 0;
end
else if(ce) begin
q <= d;// 可以有一个ce的判断,我感觉也可以没有
end
end

现在好像明白一点,就是插入流水寄存器为什么可以使时序变好,就是在触发器的时序上,它的建立时间通过一些推导可以知道,就是跟两级触发器之间的合逻辑的时间和线路上的延时有关系(简化点就认为是组合逻辑的时间),那么就是我们插入了一级触发器,其实是让就是这个时间的限制没有那么严,因为每两个触发器之间其实都是有一个时钟周期,可以来去完成一些工作,我们前面因为这在这一个时钟周期里完成不了,那我们就把它分成两段,或者是甚至是更加多的段,这样就能够让他这个工作顺利的完成,也就是这个逻辑代码的时序达到了收敛

感觉从口语化的比较容易懂的方式去理解,建立时间违例的根本原因就是组合逻辑的延时过大,数据到达第二个触发器的输入端口太晚了。然后保持时间违例的原因是组合逻辑的延时太小了,数据到达第二个触发器的输入端口太早了。所以就是在一些与时序相关的 tcl命令中,-max是表示建立时间,-min 表示保持时间。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/465869.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统中的登录功能

0 说明 登录功能几乎是每个系统的必备功能&#xff0c;在此梳理一下项目中的登录功能。登录功能分为两个模块&#xff0c;验证码模块和登录模块。下面是两个模块的步骤图和具体的代码记录。 一、验证码模块 1.1 验证码功能步骤图 1.2 验证码功能实现代码 CaptchaController…

二叉树的后序遍历

1.题目 这道题是2024-2-12的签到题&#xff0c;题目难度为简单。 考察的知识点为DFS&#xff08;后序遍历&#xff09;。 题目链接&#xff1a;二叉树的后序遍历 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 2.思路 和前两天的前序遍历、中序遍历…

分享76个文字特效,总有一款适合您

分享76个文字特效&#xff0c;总有一款适合您 76个文字特效下载链接&#xff1a;https://pan.baidu.com/s/1rIiUdCMQScoRVKhFhXQYpw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息修改实现

锋哥原创的PyQt6图书管理系统视频教程&#xff1a; PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

每日五道java面试题之java基础篇(五)

第一题. final、finally、finalize 的区别&#xff1f; final ⽤于修饰变量、⽅法和类&#xff1a;final 修饰的类不可被继承&#xff1b;修饰的⽅法不可被重写&#xff1b;修饰的变量不可变。finally 作为异常处理的⼀部分&#xff0c;它只能在 try/catch 语句中&#xff0c;…

Linux ipvlan详解(l2、l3、l3s和bridge、private和vepa模式)

Linux ipvlan详解&#xff0c;测试l2、l3、l3s和bridge、private和vepa模式。 最近在看Docker的网络&#xff0c;看到关于ipvlan网络的介绍。查阅了相关资料&#xff0c;记录如下。 参考 1.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 2.IPVlan 详…

关于物理机ping不通虚拟机问题

方法一 设置虚拟机处于桥接状态即可&#xff1a;&#xff08;虚拟机->设置->网络适配器&#xff09;&#xff0c;选择完确定&#xff0c;重启虚拟机即可。 方法二 如果以上配置还是无法ping通&#xff1a;&#xff08;编辑->虚拟网络编辑器&#xff09; 首先查看主机网…

【MySQL进阶之路】生产案例:大量数据刷盘导致的数据库性能抖动问题优化

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

VUE前端实现token的无感刷新

前言 说实话&#xff0c;这个其实没啥好讲的&#xff0c;要说有复杂度的话&#xff0c;也主要是在后端。 实现token无感刷新对于前端来说是一项十分常用的技术&#xff0c;其本质都是为了优化用户体验&#xff0c;当token过期时不需要用户调回登录页重新登录&#xff0c;而是…

【EAI 016】VIMA: General Robot Manipulation with Multimodal Prompts

论文标题&#xff1a;VIMA: General Robot Manipulation with Multimodal Prompts 论文作者&#xff1a;Yunfan Jiang, Agrim Gupta, Zichen Zhang, Guanzhi Wang, Yongqiang Dou, Yanjun Chen, Li Fei-Fei, Anima Anandkumar, Yuke Zhu, Linxi Fan 作者单位&#xff1a;Stanfo…

springboot179基于javaweb的流浪宠物管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

nba2k24 韩旭面补

nba2k23-24 韩旭面补 nba2k23-nba2k24通用 韩旭面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9605.html