quartus prime 16.0 报警告 inferring latch
前言
当写always组合逻辑块时,可能会写出 poor code。综合时软件会推断出锁存器。例如下面代码:
always @* begin
if (c == 'b1) begin
w = (a & b) ^ c;
end
end
当c等于0的时候,w就会保持上一个值,所以就产生了锁存器,quartus就会贴心的给你报一个警告。
inferring latch(es) for signal or variable "ram", which holds its previous value in one or more paths through the process
流程:
解决方式一:
补全条件,如果用的if就补全else,用的case补全default;
解决方式二:
当你使用状态机的时候,对于各种变量条件考虑可能不全面,查bug眼泪掉下来,还有你希望保持原值但不愿看到警告(强迫症),最简单的方式就是把always组合逻辑变成always时序逻辑,毕竟FPGA是一款偏时序的器件,能用时序逻辑最好用时序逻辑。
如spi的状态机代码:(举个栗子,代码风格和代码可能都是错的)
always @(*) begin
case (cstate)
IDEL: begin
//master_din_reg = 0;
//master_dout = 0;
cs = 'b1;
wr_done = 'b0;
rd_done = 'b0;
sck_en = '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
组合改成时序逻辑(这是对的):
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
cs <= 'b1;
data_cnt_en <= 'b0;
sck_en <= 'b0;
master_din_reg <= ;
master_dout <= ;
end
else begin
case (cstate)
IDEL: begin
data_cnt_en <= 'b0;
master_din_reg <= (wr) ? master_din : master_din_reg; //load the data you want send to slaver;
end
SEND: begin
data_cnt_en <= 'b1;
cs <= 'b0;
sck_en <= 'b1;
master_dout <= (send_over) ? master_dout_reg : master_dout; //master receiverd data;
end
FINISH: begin //send and load ok;
sck_en <= 'b0;
cs <= 'b1;
data_cnt_en <= 'b0;
end
default: begin
cs <= 'b1;
sck_en <= 'b0;
data_cnt_en <= 'b0;
end
endcase //case
end
end
以上。
quartus prime 16.0 报警告 inferring latch的更多相关文章
- Quartus prime 16.0 in_system memory content editor 使用
前言 quartus提供了片内存储器的实时查看与修改,而不用编译工程,很棒.你可以方便的查看到存储器中到底存储了什么东西. 流程 1.打开: 2.主界面: 3.设置jtag项之后,查看即可. sign ...
- Quartus prime 16.0 signaltap II 使用
前言 由于逻辑分析仪太贵,altera贴心提供signal tap II来观察输出波形,不过使能signaltap II会占用片内ram,毕竟原理就是把数据采样到ram中再通过jtag口上传到quar ...
- Quartus prime 16.0 中通过JTAG固化程序
前言 下载项目sof文件到开发板中,掉电后会消失:由于开发板有JTAG口,则可以用JTAG固化jic文件到EPCS16芯片中. 流程 1.打开quartus软件并打开convert programmi ...
- 对ChemDraw Prime 16.0你了解多少
ChemDraw Prime 16.0应用是化学智能绘图程序的行业领导者.除了创建符合出版标准的绘图,化学家们可以使用ChemDraw Prime软件预测性能,搜索数据库等来节省时间,提高数据的准确性 ...
- altera quartus 百度云分享 quartus prime 17.1 16.1 13.0
quartus prime 17.1 标准版 链接:https://pan.baidu.com/s/10QWejKdDobVxDSqnVPJ0xQ 提取码:hhvj 复制这段内容后打开百度网盘手机Ap ...
- centos7编译安装LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常见问题报错及解决方法
LNMP的安装与配置 nginx-1.16.0安装及配置: 第一步:前往官网下载nignx源码包 下载完毕后上传至服务器(先安装lrzsz) yum -y install lrzsz 安装完毕后执行: ...
- webpack4.0报WARNING in configuration警告
在进行webpack打包工作时,先进行如下步骤 1). 安装webpack:推荐全局命令 cnpm install webpack -g 查看webpack版本 webpack -v 2) . 此时 ...
- netcore程序部署 ubuntu 16.0.4 报错 The type initializer for 'System.Net.Http.CurlHandler'的解决方案
最近业务扩展需要把netcore程序部署到ubuntu 16.0.4上,因为代码里面用到了HttpClient 请求. 部署ubuntu后一直报错 参考地址:https://github.com/do ...
- quartus ii13.0~16.0 调用uedit (转载http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html)
转自 http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html Quartus II 中的文本编辑软件不好用,比较习惯与UE(Uedit32/ultra ...
随机推荐
- 小菜鸡儿的第三次OO博客
规格化设计历史 规格化设计的历史目前网上的资料并不多,百度谷歌必应也表示无能为力...... 在这里结合现实情况讲一讲自己对程序规格化的理解,首先代码规格化对代码的影响是间接的,或许它不能让你代码里面 ...
- 分解质因数FZU - 1075
题目简述:就是给一个数,把他拆分成多个素数的乘积,这正好是算术基本定理.本题我的解决方法是埃氏素数筛+质因数保存...开始T掉了,是因为我在最后枚举了素数,保存他们的次数,然后两次for去查询他们的次 ...
- remote:error:refusing to update checked out branc
参考网上的GIt服务器配置流程(http://blog.csdn.net/ice520301/article/details/6142503) 遇到了 http://www.cnblogs.com/c ...
- Jmeter之发送请求入参必须使用编码格式、Jmeter之发送Delete请求可能入参需要使用编码格式
这里的其中一个属性值必须要先编码再传参才可以,具体可以通过抓包分析观察:
- 18-vue-cli脚手架项目中组件的使用
在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还 ...
- git repository description
Git - Plumbing and Porcelainhttps://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain gith ...
- java.lang包【Object类】
基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...
- CLOUD SQL跟踪
CLOUD会自动在后台执行一些sql语句,所以追踪起来比较麻烦,需要加入一些过滤条件. 比如关键的CLIENTPROCESSID,加入后 ,就能过滤是哪个客户度执行的数据. 过滤数据.
- linux audit审计(3)--audit服务配置
audit守护进程可以通过/etc/audit/auditd.conf文件进行配置,默认的auditd配置文件可以满足大多数环境的要求. local_events = yes write_logs = ...
- VS Code & MacOS & Zsh
VS Code & MacOS & Zsh https://code.visualstudio.com/docs/setup/mac solution OK bug $ cat .zs ...