
Verilog-CBB 开发与验证
文章平均质量分 67
这个专栏主要是来写一些Verilog设计中一些好用的CBB(Common Building Block;CBB),可以在设计中复用。
在路上-正出发
自勉:故余虽愚,卒获有所闻
热爱:ASIC以及FPGA数字设计
学历:NJUST EI 本/硕
语言:Verilog HDL、Matlab、Tcl、Python、SystemVerilog、Perl
闲暇:
-1- 翻译书籍《Static Timing Analysis for Nanometer Designs》(关于静态时序分析),已4万字
-2- 翻译书籍《Low Power Methodology Manual》(关于低功耗设计方法学),已完结
展开
-
【Verilog-CBB】开发与验证(7)——固定优先级仲裁器
仲裁器的应用场景非常多,特别是在一些多主多从的应用场景中,同时有多个设备有请求时,优先响应哪一个呢?比如总线的使用、内存的访问。仲裁器系列本文先开个头说一下固定优先级仲裁器的设计。既然讲到设计,那么就先说一下设计的要求。1、仲裁模块的请求数量在模块例化时可配置;2、仲裁的优先级bit0 > bit1 >……>bit N-1;3、发起请求的一方,在总线使用完毕后发送done信号(一个时钟高电平)给仲裁器告知。4、请求获得仲裁后需要在下个时钟周期拉低req信号。原创 2024-08-18 15:06:18 · 813 阅读 · 0 评论 -
【Verilog-CBB】开发与验证(6)——RS打拍器
前面两篇文章分别给出了RS前向/后向打拍器的设计,分别可以优化valid和ready信号的时序。那么如果想要同时优化valid/ready时序则可以同时例化前向/后向打拍器。那么例化时谁在前谁在后呢?xilinx官网给出RS双向打拍器的结构框图,也该是后向打拍器在前,前向打拍器级联在后向打拍器之后。本文在前两篇文章的基础上,对RS打拍器做整体的封装集成。包括如下几种工作模式:"BYPASS":直通模式。"FORWARD":前向模式,仅优化valid时序。原创 2024-08-17 23:12:51 · 596 阅读 · 0 评论 -
【Verilog-CBB】开发与验证(5)——RS后向打拍器
接上篇,完成了RS前向打拍器的CBB设计。RS后向打拍器的设计则主要是为了缓解ready信号的时序问题。后向打拍器是对ready以及数据信号进行寄存。RS后向打拍器的设计逻辑是这样的,复位时,ready缓存器(深度为1)对上游拉高ready,如果上游发来valid以及对应的数据,那么valid信号以及数据信号直接传给下游,data不需要缓存。如果后续的传输下游ready信号一直不反压上游,那么数据和有效信号不需要缓存直接传给下游。原创 2024-08-17 22:40:04 · 415 阅读 · 2 评论 -
【Verilog-CBB】开发与验证(4)——RS前向打拍器
我们知道时序路径的建立时间收敛依赖于触发器之间的组合逻辑延迟,以及时钟周期。对于一个确定的设计一般来说,时钟频率不会有太多的让步,因此修时序的时候主要发力点就是减小触发器之间组合逻辑延迟。一方面可以通过组合逻辑优化来降低组合逻辑延迟,另一方面也可以通过插入寄存器来优化时序。在数字设计中常用来打断前后级的逻辑(握手型总线协议),保证timing收敛,同时实现pipeline的高性能效果。AXI协议是目前广泛采用的总线协议(握手型总线协议)。原创 2024-08-04 18:20:27 · 782 阅读 · 0 评论 -
【Verilog-CBB】开发与验证(3)——多比特数据CDC DMUX
在实际的设计中可能出现这种时序,即数据的有效信号仅维持一个时钟周期的时间(下图case1)而数据信号在下一个数据到来之前维持稳定。这就涉及到对脉冲的展宽问题(快到慢时钟域)。模块的本地参数LP_PULSE_WIDTH表示,目的侧时钟域输出的有效信号宽度,“CARE-1”表示有效信号宽度为1个时钟周期(取上升沿),“NOTCARE”表示数据有效信号宽度不取边沿,直接将CDC打拍结果输出。对于很高数据速率的多比特数据CDC选择异步FIFO/RAM,对于数据速率很低的多比特数据直接选择DMUX会更简单一些。原创 2024-08-04 11:35:53 · 1268 阅读 · 0 评论 -
【Verilog-CBB】开发与验证(2)——单比特信号CDC同步器
多时钟域的设计中,CDC处理的场景还是蛮多的。单比特信号在CDC时,为保证信号采样的安全性,降低亚稳态,必须要对信号做同步处理。CDC从时钟的快慢关系来说分为两种case:快到慢、慢到快。对于脉冲型的控制信号,在以上两种case中都需要满足如下条件才能保证控制信号CDC的安全性:源端控制信号的脉冲宽度>1.5倍目的端时钟周期 (即 ”三时钟沿“ 要求)。一般建议以上条件中1.5增大为2。在设计同步器时需要注意,源端控制信号必须为寄存器输出。否则组合逻辑的毛刺可能会影响目的端的采样。原创 2024-08-03 16:58:03 · 734 阅读 · 0 评论 -
【Verilog-CBB】开发与验证(1)——开个头
在Verilog代码设计的过程中,经常会涉及到一些常用组件的应用,比如仲裁器、打拍器、RS双向打拍器等。这些组件如果重复开发就会降低效率。这些常用的组件业内称为CBB(Common Building Block)。本专栏旨在开发一些好用易用的CBB,承诺本专栏永不收费。并且每位读者都可以在评论区给出意见,欢迎各位读者使用开发的CBB,提出修改和优化的意见,共创共享。构建一个良好的CBB生态。原创 2024-08-03 15:29:00 · 437 阅读 · 0 评论