Advertisement

UVM验证学习(第20次)Verilog实践练习(nowcode Verilog进阶题)(CDC)

阅读量:

格雷码

二进制数转换为格雷码的规则是保持最左侧的位不变,随后将最高位与次高位进行异或运算,得到格雷码的次高位,依此类推。

一个普遍存在的错误认知是,只有当数值范围为2的n次方时,格雷码才能确保任意两个相邻数值之间仅有一位不同。事实上,只要数值范围为偶数即可满足相邻数值仅有一位差异的要求,但此时格雷码的起始值可能并非从0开始,而是存在一定的偏移。例如,在需要覆盖12个数值的情况下,可以选择从2(0011)开始至13(1011)结束的格雷码序列,依然能够实现首尾数字之间仅有一位差异。

此外,在FIFO结构中,为了判断缓冲区是否为空或满,通常需要额外添加一位最高位。因此即便FIFO的深度为奇数,在扩展了最高位之后,读写指针的有效选择范围仍会变为偶数。这意味着FIFO在设计时无需特意选择偶数深度或2的幂次作为其容量大小以适配格雷码的应用需求。

同步FIFO

双端口RAM的结构示例中展示了两个输入时钟信号,分别为读取时钟与写入时钟。同时,读写操作各自配置了独立的使能控制端口及地址端口,其中读取操作对应一个输出端口,而写入操作则对应一个输入端口。
具体实现方式如下

复制代码
    module dual_port_RAM #(parameter DEPTH = 16,
    					   parameter WIDTH = 8)(

全部评论 (0)

还没有任何评论哟~