济南网站设计公司富,网站项目进度,2014网站怎么备案,淘宝开网店怎么运营高亚军老师的这本书《AMD FPGA设计优化宝典》#xff0c;他主要讲了两个东西#xff1a; 第一个东西是代码的良好风格#xff1b; 第二个是设计收敛等的本质。
这个书的结构是一个总论#xff0c;加上另外的9个优化#xff0c;包含的有#xff1a;时钟网络、组合逻辑、触…
高亚军老师的这本书《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 表示保持时间。