verilog设计知识集合(2)

1、阻塞与非阻塞

阻塞赋值是存在先后关系的,非阻塞是不存在先后关系的。一般而言,阻塞用于组合逻辑,非阻塞用于时序逻辑(不一定)。阻塞的执行时逐步赋值,非阻塞是同步赋值。

阻塞和C中的赋值语句功能是一致的。为何会存在非阻塞赋值呢?这里主要考虑的是寄存器的状态包含现状态和下一状态,这使得硬件电路存在一个变量赋值给另外一个变量时还可以将其他变量赋值给它的操作,这和存储器的工作方式不大一样。显然,这种赋值方法更加高效且匹配寄存器。所以,非阻塞赋值也就有了应用场景了。

model fbosc1(y1, y2, clk, rst);
output y1, y2;
input clk, rst;
reg y1, y2;
always @ (posedge clk or posedge rst)
if (rst) y1 = 0;
else y1 = y2;
always @ (posedge clk or posedge rst)
if (rst) y2 = 1;
else y2 = y1;
endmodule

摘录一个反馈振荡器的工作来说明其工作的方式。这里使用的是阻塞赋值,在rst到达always块时,信号阻塞赋值,哪个先到先执行哪一个。换言之,这个时候存在因延时导致输出不同的亚稳态。

2、隐藏的锁存器

如果使用电平触发,而电平敏感源不能包括所有变化信号,则可能形成锁存器(也可能是冗余逻辑)。在前面的数字电路之MOS设计中粗略的介绍了锁存器的作用。一般而言,不使用锁存器加入设计,除非掌握了相应的设计方法。

3、赋值语句的特点

always块并行处理,所以不能在不同的always块中对同一变量赋值,构成时序冲突。

(小技巧:可以通过对某一变量赋值'bx,这时就会解释为无关变量,得到最简洁的电路)

4、基本编程要点

1️⃣时序电路采用非阻塞赋值2️⃣锁存器使用非阻塞3️⃣always建模组合逻辑时采用阻塞逻辑(这一点和习惯不同,注意区分,虽然单条语句没有区别,但是多条语句是存在区别的)。

4️⃣不要混用5️⃣$strobe显示阻塞赋值语句的值,$display显示非阻塞语句的值

5、同步设计的几个

1️⃣所有数据通过组合逻辑和触发器2️⃣延时由同步延时单元控制3️⃣组合逻辑不能形成自反馈4️⃣时钟不能门控5️⃣数据信号必须通向组合或者延时单元

总之,不能违背数字电路的基本要求。

6、竞争条件

由于延时导致输出竞争的现象,一般出现在延时单元。比如clk和rst接在一起,两者都是边沿触发(异步复位),这是就存在信号由于always内部延时产生不同的结果的现象。

7、门电路延时

使用门电路产生脉冲,这是数字电路中常用的方法。采用一个双反相器做成的延时加上一个逻辑门即可。不过现在一般采用PLL生成不同的频率时钟。这种脉冲使用较少。

8、违背建立时间和保持时间

违背建立时间,时钟频率需要放缓;违背保持时间,信号需要加入buff缓冲。

9、脉冲毛刺

这个在数字电路中比较常见了,毛刺一般来自于逻辑门的延时,消除方法就是使用寄存器同步一下。

10、门控时钟的危害

门控时钟的主要缺点是将逻辑门延时带入时钟信号,会打乱其他寄存器与门控时钟驱动的寄存器的相对延时,造成某些数据的丢失。

11、异步信号的亚稳定

一般来说,异步信号的采集由于不能喝同步信号保持确认的关系,容易产生亚稳态(即采集的信号失败)和建立保持时间失效的现象。

12、可以使用的异步信号

异步复位信号rst。

verilog设计知识集合(2)的更多相关文章

  1. Verilog设计Valid-Ready握手协议

    转自http://ninghechuan.com 我不生产知识,我只是知识的搬运工. Handshake Protocol握手协议!为了保证数据传输过程中准确无误,我们需要加上握手信号来控制信号的传输 ...

  2. Verilog设计技巧实例及实现

    Verilog设计技巧实例及实现 1 引言 最近在刷HDLBits的过程中学习了一些Verilog的设计技巧,在这里予以整理.部分操作可能降低代码的可读性和Debug的难度,请大家根据实际情况进行使用 ...

  3. 最实用的APP界面设计知识,有温度的APP设计(转)

    在逛简书的时候,无意之间看到了这样的一篇非常有意思的app设计博文.顾25学堂的摘录了其中的一些关于移动端APP界面设计的精华.分享给25学堂的app设计师们. 当然,下面的这些app设计知识点是来自 ...

  4. 硬件描述语言Verilog设计经验总结

    一.硬件描述语言Verilog 粗略地看Verilog与C语言有许多相似之处.分号用于结束每个语句,注释符也是相同的(/* ... */和// 都是熟悉的),运算符"=="也用来测 ...

  5. 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...

  6. 基于basys2驱动LCDQC12864B的verilog设计图片显示

    话不多说先上图 前言 在做这个实验的时候在网上找了许多资料,都是关于使用单片机驱动LCD显示,确实用单片机驱动是要简单不少,记得在FPGA学习交流群里问问题的时候,被前辈指教,说给我最好的指教便是别在 ...

  7. 基于basys2用verilog设计多功能数字钟(重写)

    话不多说先上图         前言 自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表.记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满 ...

  8. 【CPU微架构设计】利用Verilog设计基于饱和计数器和BTB的分支预测器

    在基于流水线(pipeline)的微处理器中,分支预测单元(Branch Predictor Unit)是一个重要的功能部件,它负责收集和分析分支/跳转指令的执行结果,当处理后续分支/跳转指令时,BP ...

  9. Verilog设计分频器(面试必看)

    分频器是指使输出信号频率为输入信号频率整数分之一的电子电路.在许多电子设备中如电子钟.频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种 ...

  10. Verilog设计中的锁存器

    问题: 什么是锁存器? 什么时候出现锁存器? 锁存器对电路有什么影响? 如何在FPGA设计中避免锁存器? 在FPGA设计中应该避免锁存器.实际上,锁存器与D触发器实现的逻辑功能基本相同,都有暂存数据的 ...

随机推荐

  1. 玩转 CMS2

    玩转 CMS2 上篇研究了样式.请求.evn.mock,感觉对效率的提升没有太明显作用. 比如某个工作需要2天,现在1天可以干完,这就是很大的提升. 提高效率的方法有代码复用.模块化.低代码工具. 目 ...

  2. Java设计模式-建造者模式Builder

    介绍 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式.它可以 将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方 法可以构造出不同表现(属性)的对象 ...

  3. Oracle 中UNDO与REDO的区别详解

    一 为了更清楚的看出2者区别,请看下表: UNDO                                                                   REDO Rec ...

  4. Java并发编程实例--12.使用线程工厂创建线程

    工厂模式是面向对象编程世界中最有用的设计模式. 它是一个创新型的模式,目标是开发一个对象,这个对象的任务是去创建其他类对象. 这样一来,如果我们想创建某些类的对象就不需要使用new关键字.好处有以下几 ...

  5. E4X已经被废弃,各浏览器基本上不再支持它;

    E4X是一种在ECMAScript标准的基础上加入的动态XML支持的程序语言扩展. 到2019年,目前主流浏览器已经不太支持它了,一些版本的Firefox浏览器或许还可以使用,但它已经在主流浏览器的主 ...

  6. 2021-07-20 JavaScript中关于eval()方法

    eval()常见用途 1.使用ajax获取到后台返回的json数据时,使用 eval 这个方法将json字符串转换成对象数组 let jsonString = JSON.stringify({fang ...

  7. Python嵌套绘图并为条形图添加自定义标注

    论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程. 首先,实现 Seaborn 分别绘制折线图和柱状图. '''绘制折线图''' import seaborn ...

  8. zip压缩模块,tarfile压缩模块,包和模块,format格式化的复习--day17

    1.zipfile模块 import zipfile #导入模块 1.压缩文件 (1)创建压缩包 参数1压缩包名字,参数2以w模式创建,参数3压缩固定写法 zf = zipfile.ZipFile(& ...

  9. 基于kubeadm部署k8s1.80.0

    k8s搭建 硬件要求 测试环境 # master 2核 4G 20G # node 4核 8G 40G 生产环境 # master 8核 16G 100G # node 16核 64G 500G 方式 ...

  10. 【Azure 事件中心】Spring Boot 集成 Event Hub(azure-spring-cloud-stream-binder-eventhubs)指定Partition Key有异常消息

    问题描述 在Spring Boot应用中集成Event Hub,发送消息时指定Partition Key,日志中发现异常: 应用使用Event Hub版本为 <dependency> &l ...