Quartus prime16.0 组合逻辑always块中敏感向量表不全
前言
组合逻辑always块中向量敏感表不全导致的警告。
流程
1.对于如下代码块:
always @(nstate /*or master_din or master_dout_reg*/) begin
//initial;
master_din_reg = ;
master_dout = ;
cs = 'b0;
wr_done = 'b0;
rd_done = 'b0;
sck_en = 'b0;
case (nstate)
IDEL: begin
cs = 'b1;
wr_done = 'b0;
rd_done = 'b0;
end
LOAD: begin
cs = 'b0;
master_din_reg = master_din;
end
SEND: begin
sck_en = 'b1;
end
FINISH: begin
cs = 'b1;
wr_done = 'b1;
rd_done = 'b1;
sck_en = 'b0;
master_dout = master_dout_reg;
end
default: begin
master_din_reg = ;
master_dout = ;
cs = 'b0;
wr_done = 'b0;
rd_done = 'b0;
sck_en = 'b0;
end
endcase //case
end
对于master_din和变量master_dout_reg,两者在组合always块中使用读取,但没有在敏感向量表中,将会导致如下错误:
Warning (10235): Verilog HDL Always Construct warning at spi_ms.v(149): variable "master_din" is read inside the Always Construct but isn't in the Always Construct's Event Control
Warning (10235): Verilog HDL Always Construct warning at spi_ms.v(159): variable "master_dout_reg" is read inside the Always Construct but isn't in the Always Construct's Event Control
2.解决方法是补全敏感向量表,避免产生不必要的锁存器:
always @(nstate or master_din or master_dout_reg) begin
//initial;
master_din_reg = ;
master_dout = ;
cs = 'b0;
wr_done = 'b0;
rd_done = 'b0;
sck_en = 'b0;
case (nstate)
IDEL: begin
cs = 'b1;
wr_done = 'b0;
rd_done = 'b0;
end
LOAD: begin
cs = 'b0;
master_din_reg = master_din;
end
SEND: begin
sck_en = 'b1;
end
FINISH: begin
cs = 'b1;
wr_done = 'b1;
rd_done = 'b1;
sck_en = 'b0;
master_dout = master_dout_reg;
end
default: begin
master_din_reg = ;
master_dout = ;
cs = 'b0;
wr_done = 'b0;
rd_done = 'b0;
sck_en = 'b0;
end
endcase //case
end
3.更懒的方式为直接:always @(*)
解决一切问题。
以上。
Quartus prime16.0 组合逻辑always块中敏感向量表不全的更多相关文章
- Quartus prime16.0 与modelsim ae 联调
前言 quartus和modelsim联调对仿真还是很方便的,当然最好是quartus干综合到烧录的活,modelsim单独仿真.而且ae版的性能比se版差. 流程: 1.配置modelsim ae路 ...
- centos6.8下安装破解quartus prime16.0以及modelsim ae安装
前言 装逼使用 流程 安装modelsim: 1.modelsim ae在linux下是32位的,对于64位系统需要安装32位库:yum install xulrunner.i686 2.给予权限: ...
- 慢腾腾的Quartus prime16.0加快编译速度
前言 当一个工程反复修改的时候,可能有时候源代码没有更改,为了加快编译速度可以配置quartus一些选项.当然,初次编译的速度是否会提升,未验证.更高级的设计分区以及逻辑锁区提升速度,以后阐述. 流程 ...
- 在MVC视图的代码块中,直接输出文本,有几种方式?
@{ <div>我爱IT,我是程序员,我骄傲---</div> <!--在C#代码块中,输出文本--> <!--1.0 使用Razor内置标签text--&g ...
- finally块中的代码一定会执行吗?
在Sun Tutorial中有这样一句话:The finally block always executes when the try block exits. This ensures that t ...
- [改善Java代码]不要在finally块中处理返回值
在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重 ...
- Verilog-FPGA硬件电路设计之一——if语句优先级(always块中的阻塞赋值生成的组合逻辑电路是按照顺利执行的)
出处:http://bbs.ednchina.com/BLOG_ARTICLE_3013262.HTM 综合软件:Quartus II 一.有优先级的if语句 if..else if.. else i ...
- 一个问题:关于finally中return吞掉catch块中抛出的异常
今天遇到一个感觉很神奇的问题,记录一下问题以及自己分析问题的思路. 预警:不知道怎么看java字节码的朋友可能需要先看一下如何阅读java字节码才能看懂后面的解释. 我有一段程序: public cl ...
- 我敢说你不一定完全理解try 块,catch块,finally 块中return的执行顺序
大家好,今天我们来讲一个笔试和面试偶尔都会问到的问题,并且在工作中不知道原理,也会造成滥用. 大家可能都知道,try 块用来捕获异常,catch块是处理try块捕获的异常,finally 块是用来关闭 ...
随机推荐
- CentOS 7+nginx+PHP+php-fpm
根据网上资料配置: location ~ \.php$ { #include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index in ...
- easyui datagrid 相关取数据总结
easyui 中datagrid$('#dg').datagrid('getSelected');返回第一个被选中的行或如果没有选中的行则返回null.$('#dg').datagrid('getSe ...
- 解析vue2.0的diff算法 虚拟DOM介绍
react虚拟dom:依据diff算法台 前端:更新状态.更新视图:所以前端页面的性能问题主要是由Dom操作引起的,解放Dom操作复杂性 刻不容缓 因为:Dom渲染慢,而JS解析编译相对非常非常非常快 ...
- webpack之loader和plugin简介
webpack之loader和plugin简介 webpack入门和实战(二):全面理解和运用loader和plugins webpack入门(四)——webpack loader 和plugin w ...
- Python学习第十三篇——函数的深层次运用
def make_pizza(size,*toppings): print("\nmaking a "+str(size)+" size pizza with follo ...
- Json详解以及fastjson使用教程
Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免的会遇到Json的使 ...
- [转帖]OS/2 兴 衰 史
OS/2 兴 衰 史 https://zhidao.baidu.com/question/12076254.html 最近在看windows的版本 感觉自己接触电脑太晚 知道的也是很少 不明白 之前有 ...
- 同一个机器 安装多个版本Chrome浏览器的方法
1. Chrome 现在安装直接没有任何提示 就直接安装了 而且自动式 高版本覆盖低版本安装 不给你任何选择版本的机会. 2. 但是chrome 的安装是基于用户的 所以 同一个机器 使用不同的用户 ...
- CentOs7安装docker(第二篇)
一.Docker的概念: Docker: 镜像:Images 类似于面向对象中的类 容器:Container 类似于面向对象中的对象 它们之间的关系:容器Container通过镜像Images来创建 ...
- Day 3-6 生成器&迭代器
---恢复内容开始--- 列表生成式: list = [i*i for i in range(20)] # 这就是一个列表生成式 print(list) # [0, 1, 4, 9, 16, 25, ...