微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求助关于verilog的一个问题

求助关于verilog的一个问题

时间:10-02 整理:3721RD 点击:
module PWM//
(
input CLK,
input N,//延时的时钟周期
input CLK_ab,
output pwmab, pwmba
);
regpwmab_temp=0;
regpwmba_temp=0;//
always @(CLK_ab)
begin
if(CLK_ab==0)
begin
pwmab_temp=0;
#Npwmba_temp=1;
end
if(CLK_ab==1)
begin
pwmba_temp=0;
#Npwmab_temp=1;
end
end
assign pwmab=pwmab_temp;
assign pwmba=pwmba_temp;
endmodule
这段程序有什么问题啊?怎么老是说
Warning (10240): Verilog HDL Always Construct warning at PWM.v(23): inferring latch(es) for variable "pwmab_temp", which holds its previous value in one or more paths through the always construct
请高手帮忙看看

这个warning是说产生了锁存器
另外,这个代码应该是个TB吧?

TB是什么?

你这是在写软件
你这是写软件
coding style问题,写的时候你一定没先去想它的硬件实现
首先module ports里面两个时钟。如果不是CLK GENERATOR,不能这么写
其次触发器没有reset.现在工艺库里面基本触发器怎么会没有异步reset呢
#N...这个是bench写法,怎么综合。你应该用简单状态机或者至少2个always来写。
周围有个人一步步指导,后面就会好的:)

把两个if改成if。else结构应伽i就不会出现警告了
另外你这个代码中的CLK输入并没用到
这个代码也是不可综合的,除非是对某ip核的例化

谢谢大家
我把if。if改了(是不是因为有可能出现条件不满足的情况,所以用锁存器来保存?),但是程序还是和我相像的不一样。
那`timescale 10ns/1ns怎么用CLK实现啊?我写CLK是想实现这个功能的,但是后面的东西没想好还没写。

latch的问题是因为你#N那块造成的
解释器错误以为同一个always块的同一分支一会1一会0,误解了你的意思
如果不是这块写的有问题,一般时序逻辑里面不会综合成latch的

不太理解。

谁能给个例子看看么?

你这段代码只能在仿真时可用, 不能作为综合的输入.
你想要的功能是什么呀

就是实现一个方波,其前沿与给定方波的前沿有任意延时,后延与给定方波的后延相同。
恩,现在基本做好了,功能仿真没啥问题,不过时序仿真好像那个周期不能改大,这样的话延时几纳秒就到下一个周期了,怎么办啊?
ps:我用的是quartersII 6.1版

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

网站地图

Top