9 EDA实用技术与教程【Verilog深入】
1.过程中的两类赋值语句
1. 阻塞式赋值和非阻塞式赋值的区别
阻塞式赋值语句(目标变量名=驱动表达式) 的执行过程分为三步:
计算出“驱动表达式”的值;
向目标变量进行赋值操作;
完成赋值。
这三步是并成一步完成的,即一旦执行,目标 变量被立即更新,而在此过程中其他同类赋值 语句必须停止工作!
非阻塞式赋值的三个步骤不是一步完成的
非阻塞式赋值在赋值的第一个阶段(计 算“驱动表达式”的值)理论上是可以 立即完成的,但第二个阶段(向目标变 量进行赋值操作),需要由一个δ延时段。 也就是δ延时后,赋值才被更新。在这个 延迟时间段,允许其他同类赋值语句的 执行或者说赋值操作。
2. 未指定延时的阻塞式赋值语句
目标变量名=驱动表达式
3. 指定了延时的阻塞式赋值
左边例子表示,当第一条语句执行完之后需要延时6个时间单位在执行第二条语句;右边例子表示,当第一条语句执行完后,立刻执行等式右边表达式的值,等待6个时间单位后再赋值给左边
4. 未指定延时的非阻塞式赋值
非阻塞赋值允许对同一目标多次赋值或驱动,并且最终获得赋值(更新)的目标 变量是最后一个,即最接近过程结束的那一语句的目标变量。
左:程序是不被允许的,由于连续赋值语句的并行性,使得综合器无法确定Q1获得什么值,除非这三条语句被执行后,Q1能获得高阻态z的赋值。
中:阻塞式赋值,Q1经历了2b'11和2b'01的赋值
对于非阻塞赋值,Q1从来未经历过2’b11和2‘b01数据的更新。
5. 指定了延时的非阻塞式赋值
赋值号左侧的[延时]是指对整条语句执行的延时,即相隔与上一条 语句的延时量。
赋值号右侧的[延时]是指在赋值语句的右侧表达式得出运算结果后, 延时一段指定的时间再将运算结果赋值给赋值号左边的变量
6. 深入认识阻塞与非阻塞式赋值的特点
7. 不同的赋初值方式导致不同综合结果的示例
2.过程语句归纳
1. 过程语句应用总结
(1)和软件语言不同,过程语句always的执行依赖于敏感信号的变化。
(2)在一个模块中可以包含任意个过程语句结构,所有的过程语句结构本身都属于并行运行语句, 而由任一过程引导的各类语句结构都属于顺序语句。
(3)与引导行为语句(顺序执行的语句)的always语句相对应,assign引导的语句属于并行语句。 always语句本身也属于并行语句,所以在许多情况下这两类语句是可以互相转换表达的。
2. 深入认识不完整条件语句与时序电路的关系
(1)不完整的条件语句的描述,是Verilog描述时序电路的途径之一(通常用于描述电平触发类锁存 器电路)。
(2)在利用条件语句进行纯组合电路设计时,如果没有充分考虑电路中所有可能出现的问题(条 件),即没有列全所有的条件及其对应的处理方法,将导致不完整的条件语句的出现,从而综合出了 设计者不希望的组合与时序电路的混合体。
完整的条件语句构成组合电路,不完整的条件语句构成时序电路
3.if语句归纳
1. if语句的一般表述形式
第(3)种if语句是一种多重if语句嵌套式条件句,其重要特点为,其任一分支 顺序语句的执行条件是以上各分支所确定条件的相与,即相关条件同时成立。 即语句中顺序语句的执行条件具有向上相与的功能,而有的逻辑设计恰好需要 这种功能,如优先编码器。
设计一个11分频的分频器,要 求输出占空比为50%
module div11x(input clk,input reset_n,output q);reg [3:0] cnt;reg x_p,x_n;
always @(posedge clk,negedge reset_n)
if(!reset_n)cnt <= 0;
else if(cnt < 11-1)cnt <= cnt + 1'b1;
elsecnt <= 0
always @(posedge clk,negedge reset_n)
if(!reset_n)x_p <= 0;
else if(cnt < 11/2)x_p <= 1;
elsex_p <= 0;
always @(negedge clk,negedge reset_n)
if(!reset_n)x_n <= 0;
elsex_n <= x_p;assign q = x_p | x_n;
endmodule
4.三态Verilog的描述
(1)当使能控制信号ENA为1时,4位数据输出;为0时输出呈高阻态。
(2)Z和普通数值不同,它只能在端口赋值,不能在电路模块中被信号所传递;而且由于Z在 综合中是一个不确定的值,有的情况下不同的综合器可能会给出不同的结果,因而对于 Verilog综合前的行为仿真与综合后的功能仿真结果也可能是不同的。
2. 双向端口设计
由于双向端口在完成输入功能时,必须使 原来呈输出模式的端口呈高阻态,否则待 输入的外部数据势必会与端口处原有电平 发生“线与”,导致无法将外部数据正确 地读入,也就无法实现双向功能
3. 三态总线控制电路设计
要设计出能产生独立控制的多通道的三态总线电路结构,必须使用并行语句
例题:根据RTL图写程序、
5.双向端口设计
由于双向端口在完成输入功能时,必须使原来呈输出 模式的端口呈高阻态,否则待输入的外部数据势必会 与端口处原有电平发生“线与”,导致无法将外部数 据正确地读入,也就无法实现双向功能。
右边例子的情况就不同了,其中在else之前的块语句中仅增加了语句 Q<=4’HZ就解决了两个重要的问题: (1)使Q在if语句中有了完整的条件描述,从而克服了时序元件的引入。 (2)在Q履行输入功能时,将其设定为高阻态输出,使Q成为真正的双向 端口
9 EDA实用技术与教程【Verilog深入】相关推荐
- 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程
可以通过以下办法找到教程: 1,在软件界面点帮助-使用教程 2,在网站首页-帮助-教程进入 如何使用教程: 这里是一级目录,其实对新手最有用的是前面3个部分,后面的仿真先不看. 常见问题里面不光是讲的 ...
- EDA技术使用教程实验
转载于:https://www.cnblogs.com/bgd140206128/p/6537203.html
- EDA时序电路的Verilog设计
时序电路通常都是由过程语句来描述的 时钟边沿敏感型(posedge,negedge).电平敏感型 触发器:时钟端要加上posedge,表示需要产生时序电路 用UDP也能描述时序电路,(01)表示信号是 ...
- 基于VHDL的全自动洗衣机控制器设计
全自动洗衣机控制器设计 <数字电子技术>课程设计报告 <数字电子技术>课程设计任务书 设计内容与要求 1.概述 1.1EDA简介 1.2开发软件quartus简介 2.基本原理 ...
- 拼题A (PTA) 公共题集题解收录
仓库地址:PTA: 拼题A(PTA)公共题集的题解 (github.com) 该仓库收录 拼题A 公共习题的题解,绝大部分习题都是本人自己的原创代码,如有错误的代码可提交 Issue 推荐使用我开发的 ...
- 第一章 信息源泉——推介资料出处
一.推介图书 初学者建议看基本中文的教材,这样方便上手 (1)<EDA技术使用教程-Verilog(第四版)>潘松 黄继业,科学出版社 国内Verilog经典教材,杭电人民首批试用,由杭电 ...
- 基于FPGA的VGA显示设计(一)
前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...
- 基于FPGA的VGA时序分析
前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...
- 如何学习FPGA,好书推荐
<深入浅出玩转FPGA>有书,有视频,有开发板,非常适合自学. 而且作者根据自己的实践经验写出来的书,很实在. 转载某人推荐的:http://archive.cnblogs.com/a/2 ...
最新文章
- it行业php,什么是IT行业
- Bzoj2555 SubString
- __declspec(dllexport)的作用
- 爬虫学习round02
- 卷积滤波 英文_图像处理必备英文词汇
- JavaWeb国际化
- 2021第十二届蓝桥杯省赛B组原题答案及总结
- 极光推送源码api封装改造
- oracle静默安装集群,Oracle RAC 静默安装实践
- IMPROVING ADVERSARIAL ROBUSTNESS REQUIRES REVISITING MISCLASSIFIED EXAMPLES
- 【私有,不喜勿入】健康
- 督查督办工作基本程序
- 小尺寸 GPS 北斗 GNSS 全向内置天线方案 CA-G01 CrossAir贴片天线
- 正式服务器有信号枪吗,吃鸡信号枪正式实装!我朝天开一枪引来了十个挂
- c#中实现Word、Excel、Pdf预览及音频和视频播放
- 梯度下降法,二维空间三维空间 代码实现
- Android Studio的报错提示:SSL peer shut down incorrectly
- html5 video 隐藏全屏按钮,如何隐藏HTML5视频标签的全屏按钮?
- 危楼还望,叹此意、今古几人曾会? — 夜读南宋词人陈亮《念奴娇·登多景楼》感怀
- 金字塔的思维---先总后分与结论先行