微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于锁存器的问题3

关于锁存器的问题3

时间:10-02 整理:3721RD 点击:
我的程序如下:
module new(out,in,enable ,dsp);
output[0:7] out;

input[0:7]in;
input enable;
output dsp;
reg[0:7] out;
reg dsp;
reg[0:7] in1;
always @(in )

dsp = !(in[0] | in[1] |in[2]|in[3]|in[4]|in[5]|in[6]|in[7] );
always @( dsp or in)
if(!dsp)
in1 = in;
always @(enable or in1)
if( !enable )

out = in1;

else

out = 8'bzzzzzzzz;
endmodule
编译能通过,但出现下面一个warning,请问如何解决?
@W: CL118 :"D:\cpld\verilog\latch\new.v":18:7:18:8|Latch generated from always block for signal in1[0:7], probably caused by a missing assignment in an if or case stmt
@END

关于锁存器的问题3
in1信号附值时由于条件不完整产生锁存器。

关于锁存器的问题3
它本来就是一个过渡信号呀,如果in有变化导致dsp变化后,将in赋给in1,如果enable有变化,就将in1放到数据线上,否则给数据线放高阻。
但老是warning在if(!dsp)?不知道为什么?

关于锁存器的问题3
抱歉,没看懂你要设计个什么功能。你纯粹是在写代码,不是在设计电路。
首先信号命名太差,dsp是什么?是DSP吗?
dsp = (in==8'b0);
if(in!=8'b0)
in1 = in;
out = enable ? 8'bz : in1;
那请问:当输入in等于0时,out输出什么?你还说你设计中没有latch?

关于锁存器的问题3
看看这一句:当dsp等于0时,将in的值赋给in1。如果dsp不等于0,情况如何?你没有说明,则此时in1保持它原先的值,这不就是一个锁存器吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top