Verilog HDL
文章平均质量分 59
Verilog HDL
那么菜
仗剑天涯,谁来也不怕
展开
-
#Verilog HDL# Verilog中的延迟语句
本文转载,仅供学习,勿喷~Verilog 中的仿真延时语句为 #n,n表示延时时间,将该语句加在语句中,延迟n个时间单位。延时的添加方法有两种:正规延迟和内定延迟。转载 2024-07-14 17:15:43 · 335 阅读 · 0 评论 -
#Verilog HDL# Verilog设计中的竞争问题和解决办法
经过前面文章的学习,我们知道:不管是Verilog设计语言,还是Sytemverilog验证语言,标准都定义了语言调度机制,来规范各家编译器和仿真器的开发。通过VCS+Verdi 工具查看波形如下:可见,使用阻塞赋值的方式,在每个clk 的时钟上升边沿,b的数值 === a 的数值。我们通过仿真调度查看选项,看到的数值赋值情况如下,与仿真调度机制预期结果一致。我们通过仿真调度查看选项,看到的数值赋值情况如下,与仿真调度机制预期结果一致。仿真结果,与实际硬件电路行为一致,避免了硬件电路的竞争现象发生。原创 2023-05-30 23:07:04 · 438 阅读 · 2 评论 -
#Verilog HDL# Verilog中的标量与向量
Verilog需要表示单个位以及多个位的组。例如,一个单bit时序元件是一个触发器。然而一个16位的时序元件是一个可以容纳16位的寄存器。为此,Verilog有标量和矢量网以及变量。一个没有指定范围的net或reg声明被认为是1位宽,是一个标量。如果指定了范围,那么net或reg就变成了一个多比特的实体,称为向量。转载 2023-05-08 17:38:57 · 465 阅读 · 0 评论 -
#Verilog HDL# 之 UDP学习(陷阱篇)
Verilog有内建原语如门,传输管,开关等,这些都是相当小的原语,如果我们需要更为复杂的原语,verilog提供了UDP,也就是用户定义原语(User Defined Primitives). 使用UDP可以建模组合电路和时序电路。原创 2022-12-13 23:01:19 · 586 阅读 · 0 评论 -
#Verilog HDL# 之 UDP学习(理论篇二)
Verilog有内建原语如门,传输管,开关等,这些都是相当小的原语,如果我们需要更为复杂的原语,verilog提供了UDP,也就是用户定义原语(User Defined Primitives). 使用UDP可以建模组合电路和时序电路。原创 2022-12-13 22:58:00 · 606 阅读 · 0 评论 -
#Verilog HDL# 之 UDP学习(理论篇一)
今天,搜刮搜刮网上的大佬们对于VerilogHDL关于UDP的知识讲解,并做整理。为什么会心血来潮搞起这个话题呢?哎,是因为工作中遇到了棘手的问题,翻来覆去追查一番,虽然最终解决了问题,但是对于牵扯到的知识点UDP模模糊糊。不能放过任何一个知识点啊,总有一天你会和它不期而遇。向分享知识的大佬们致敬!瑞斯拜~~~原创 2022-12-13 22:53:06 · 671 阅读 · 0 评论 -
#Verilog HDL# 连续赋值语句、过程赋值语句、过程连续赋值语句
1. 连续赋值语句(Continuous Assignments)连续赋值语句是Verilog数据流建模的基本语句,用于对线网 wire 进行赋值,等价于门级描述,是从更高的抽象角度来对电路进行描述。连续赋值语句必须以关键词assign开始。assign LHS_target = RHS_expression ;连续复制的主要特点是:(1)连续赋值语句的左值,可以是一下类型之一: ①标量线网②向量线网③矩阵中的一个元...转载 2022-02-14 14:47:39 · 4012 阅读 · 2 评论 -
#systemverilog# 吃瓜 SystermVerilog 与 Verilog HDL的关系
标准当前的System Verilog标准是由IEEE(国际电子电气工程师协会)和Accellera(基于工业的标准协会)两个国际组织制定的,版本编号为3.1a,用以表明这个版本是Verilog语言的第3次重大改进。这个版本对System Verilog和Verilog两个标准都有一些修改。IEEE标准1800-2005/IEC62530:2007这个文件是语言参考手册(LRM),但其中只包含Verilog标准1364-2005的一些扩展的定义。为了得到System Verilog语法的全部定义转载 2022-01-26 21:02:10 · 350 阅读 · 0 评论 -
#Verilog HDL# 时钟切换处理技术
随着各种应用场景的限制,芯片在运行时往往需要在不同的应用下切换不同的时钟源,例如低功耗和高性能模式就分别需要低频率和高频率的时钟。两个时钟源有可能是同源且同步的,也有可能是不相关的。直接使用选择逻辑进行时钟切换大概率会导致分频时钟信号出现毛刺现象,所以时钟切换逻辑也需要进行特殊的处理。时钟切换问题直接采用选择逻辑对时钟进行切换的电路图如下所示。假如时钟选择信号 sel_clk1 与两个时钟都是异步的,那么时钟切换时刻就是任意的。假如时钟由 clk1 切换到 clk2,且切换时刻为 clk1 输转载 2021-12-28 12:06:01 · 539 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之异步FIFO的设计(5)
异步FIFO设计(Verilog)_沧海一升的博客-CSDN博客_fifo设计异步fifo的设计_bleauchat的博客-CSDN博客_异步fifo设计转载 2021-12-26 17:03:47 · 113 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之多bit信号&FIFO(4)
多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的。如下图:虽然信号都同步到目的时钟域,可完成的功能却与设计的初衷不相符。解决方案之一为对信号进行格雷码编码,但此方案只适用于连续变化的信号。另一种方案为增加新的控制信号en,确保传输信号稳定时采样。比如在传输信号稳定输出1、2个clk后再进行采样。一、异步FIFO上面说到的为多bit指示信号传输,而数据流的传输与指示信号不同在于:数据流大多具有连续性,及背靠背传输;数据流要求信号具有较快的传输速度。主要的方案是利用FIFO进行转载 2021-12-26 16:13:09 · 918 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之结绳法(3)
信号从快时钟域到慢时钟域过渡时,慢时钟可能无法对快时钟变化太快的信号进行采样。之前的同步器法对两个时钟间的关系有要求,结绳法适用于任何时钟域之间的过渡。结绳法的原理是将快时钟信号的脉冲周期延长,等到慢时钟周期采样后再“解绳”,还原为原来的脉冲周期宽度。一、数据驱动结绳利用数据的边沿做时钟,可将脉冲延长,直到采集到数据,然后复位。这里需要注意的是,clkB域需要等待三个clkB才会在最后一个寄存器输出并完成输入端的复位。所以如果Din_clkA变化较快,即持续时间小于三个clkB(Din转载 2021-12-26 15:03:18 · 759 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之单bit信号(2)
前面提到了简单的双电平锁存器,下面是一些单bit同步电路。一、慢时钟域 -> 快时钟域边沿检测同步器:将慢时钟域的脉冲搬移并缩小为快时钟域的脉冲。既可以检测上升沿,也可以检测下降沿。如上图,慢时钟下一个有效脉冲的最短周期为慢时钟的一个周期,站在快时钟的角度下,这个慢时钟域的信号会在快时钟域下持续很多个周期。实际上,这个脉冲在慢时钟域只发生了一次,所以如果用快时钟去检查有效脉冲的翻转边沿是最准确的。边沿上升与下降也只有一次。适用条件:data_width>clk_fas转载 2021-12-26 14:34:19 · 531 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之双锁存器(1)
双锁存器:实际上为两个触发器。在一个信号进入另一个时钟域之前,用两个锁存器连续锁存两次。优点:结构简单,易实现,面积消耗小。缺点:增加两级触发器延时。从快时钟域到慢时钟域,易采样丢失。适用场景:慢时钟域转到快时钟域。data_delta>clk_slow+2*clk_fast+path_delay,确保所有数据变化均能采集到。结论:两级触发器已经将MTBF变得足够大,再多触发器影响电路效率。增加寄存器同步的方法为降低亚稳态出现的概率。verilog代码如下:——————转载 2021-12-26 14:20:37 · 757 阅读 · 0 评论 -
#Verilog HDL# 跨时钟域电路设计之亚稳态(0)
一、同步电路定义:电路中所有受时钟控制的单元,全部由一个统一的时钟控制。优点:在同步设计中,EDA工具可以保证电路系统的时序收敛,避免电路设计中的竞争冒险。缺点:时钟树综合需要加入大量延迟单元,使电路面积和功耗大大增加。二、异步电路定义:电路数据传输可以在任一时刻发生,没有一个统一的时钟控制。优点:模块化特点突出,对信号延迟不敏感,没有时钟偏斜问题,低功耗的特性缺点:设计复杂,缺少相应EDA工具支持同步电路和异步电路的区别在于电路触发是否与驱动时钟同步,从行为上讲,就转载 2021-12-26 14:14:24 · 339 阅读 · 0 评论 -
#Verilog HDL# verilog设计中的跨时钟域处理技术
本文介绍的3种方法跨时钟域处理方法如下:打两拍; 异步双口RAM; 格雷码转换。第一种方法:打两拍大家很清楚,处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题。打两拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。如下图所示。应该很多人都会问,为什么是打两拍呢,打一拍、打三拍行不行呢?先简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消除亚稳态危害,但是提高了可靠性减少其发生概率。总的来讲,就是一级概转载 2021-12-24 20:14:58 · 2143 阅读 · 0 评论 -
#VerilogHDL# Verilog代码设计跨时钟域之浑身解数
本文介绍的3种方法跨时钟域处理方法。目录招数(一):打2拍招数(二):异步双口RAM招数(三):格雷码转换招数(一):打2拍大家很清楚,处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题。打两拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。如下图所示。应该很多人都会问,为什么是打两拍呢,打一拍、打三拍行不行呢?先简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消除亚稳态危害,但是提高了可靠性减少翻译 2021-12-26 14:07:47 · 464 阅读 · 0 评论