s*******y 发帖数: 44 | 1 在修改一个别人写的状态机。
always @ (posedge clk or posedge reset)
begin
if(reset) begin
enable <= 0;
.........
end
else begin
case (state)
.......
enable <= some logic;
endcase
end
end
这样就没有错误信息。
可是如果写成
always @ (posedge clk or posedge reset)
begin
if(reset) begin
enable <= 0;
.........
end
else state <= next_state;
end
always @ (sensitivity list)
begin
case (state)
........
enable = some logic;
endcase
end |
|
DK 发帖数: 194 | 2 always @ posedge'clk or negedge'rst_n
是一个register with asynchronous reset,也就是说当rst_n由1-》0的那一下就把
output reset了
楼主你说的不用negedge rst_n的是synchronous reset,就是说reset变0以后,要等到
下一个clk edge, output 才被reset
你可以写:
always@(posedge clk)
begin
if(rst_n=0)
out<=0;
else
out<=in;
end
不需要把reset放到sensitivity list 里面. |
|
A***J 发帖数: 478 | 3 never heard about the first
for the second question.
The way I implement it is like below
============================
`timescale 1ns/100ps
`define clk_period 100
module clk51(clki, rst, clko);
input clki;
input rst;
output clko;
reg clko;
reg[2:0] cnt;
always #`clk_period clki=~clki
always @ (posedge clki) //count to 5
begin
if(!rst)
cnt=0;
else if (cnt==5)
cnt=0;
else
cnt=cnt+1;
end
always @ (posedge clki) // clko
begin
if(!rst)
clko=0;
else if (cnt<5)
clko= |
|
w*********s 发帖数: 277 | 4 property xxx;
@(posedge clk) a ##1 b;
endproperty : xxx
property yyy;
@(posedge clk) $rose(a) ##1 $rose(b);
endproperty : yyy
请问什么时候用edge detection的function such as $rose $fell
什么时候用level detection呢?
貌似两者sampling的机制都是一样的。
初学者,目前分不清楚他们之间的区别,请高手指教!
包子伺候!
谢谢! |
|
j******m 发帖数: 26 | 5 如附件:
具体问题是这样,我在把窗口3中的信号做积分,结果显示在窗口4中。
每当积分结果超过1,就产生一个posedge(如窗口1 & 2),然后经过一定的delay,
reset 积分器。
然后把窗口1 的结果送去一个 rising edge 的counter(设置如333.jpg)
现在的问题是,如图222.jpg中counter从5-10这个部分,前面部分counter都工作正常,但是在这里的
2个posedge,一次增加了2,一次增加了3.
请问这样的情况有可能是什么导致的呢?3Q. |
|
a*****8 发帖数: 261 | 6 这是一小段testbench verilog code。 请问这个if 语句是什么意思?怎么看不懂呀?
specify
specparam
Tcq = 0.636,
Tcqx = 0.549,
if ( !RMEB & !LS & !TEST1B )
( posedge CLKB => ( QB[23] : 1'bx )) = ( Tcq, Tcq, Tcqx, Tcq, Tcqx
, Tcq );
if ( !RMEB & !LS & !TEST1B )
( posedge CLKB => ( QB[22] : 1'bx )) = ( Tcq, Tcq, Tcqx, Tcq, Tcqx
, Tcq );
endspecify |
|
a*****8 发帖数: 261 | 7 请问下面两个always process的不同:
第一个process,有 #1 delay:
always @(posedge clk or negedge rst_n) begin
if (~rst_n)
dout <= #1 12'h0;
else
dout <= #1 din;
end
第二个process, 没有 #1 delay:
always @(posedge clk or negedge rst_n) begin
if (~rst_n)
dout <= #1 12'h0;
else
dout <= #1 din;
end
谢谢。 |
|
w**********6 发帖数: 800 | 8 请教,RTL design中,divided by 3 和 50% duty cycle怎么实现?
Hint:use two always using posedge and negedge |
|
b**********5 发帖数: 7881 | 9 assert property(@posedge (clk)) a;
?? 都忘了。。。 我在那里干活的时候, 全floor, 就我一个女的, 和另外一个
russian/eastern european的女的。。上厕所, 很舒服。。。 |
|
b**********5 发帖数: 7881 | 10 现在谁还搞assert property (@(posedge clk)
都搞那种没用的software algo。。。 |
|
m*******a 发帖数: 63 | 11 VERILOG里面可以有(always @ posedge'clk or negedge'rst_n),综合的时候一点问题
都没有,可是如果在VHDL中同时用(rising_edge(clk) 和(falling_edge(reset)就会
出错,把clk和rst都当成了时钟,说不支持MIXED EDGES. 为什么呢?还有就是为什么
要用negedge'rst_n,而不是rst_n, reset 没见过需要edge-triggered的呀。 |
|
s*******y 发帖数: 44 | 12 可能我没说清楚,我并没有Signal is assigned but never used这个告警,
是前一个告警的说明里说我会有这个告警。被告警的信号直接连到输出管脚了,我有其
他类似处理的信号,都没有问题,只有这一个有告警。我的代码大概是这样的:
always @ (posedge CLK) begin
if (rst) XXX_reg <= 1'b0;
else begin
case (addr):
5: begin XXX_reg <= 1'b1; end
10: begin XXX_reg <= 1'b0; end
default: begin XXX_reg <= 1'b0; end
endcase
end
end
assign XXX = XXX_reg;
addr来自计数器,要得到一个特定宽度的脉冲XXX_reg,输出管脚是XXX。 |
|
t*******c 发帖数: 306 | 13 程序是实现一个特殊的FIFO, 要求clock 上升沿写入,下降沿读出,在一个clock周期
内可以完成一次读写,我写了以下code, 不过不知道这样实现会不会有问题?如果没问
题的话synthesis之后的话会不会又问题?请教各位,感激不尽 (比较担心的方面是
write pointer 和 read pointer 产生于clock 两个不同的沿,在一起比较,担心会出
问题)
module FIFO(clk, reset, data_in, put, get, data_out, empty,full);
output [15:0] data_out;
output empty;
output full;
input [15:0] data_in;
input put, get;
input reset,clk;
reg [15:0] mem[7:0];
reg [3:0] wr_ptr;
reg [3:0] re_ptr;
assign empty ... 阅读全帖 |
|
T******T 发帖数: 3066 | 14 As general note in synchronous digital design, unless clock rate is slow and
absolutely necessary, refrain from using double edged sequential logic. I
would only use it for fast <-> real slow time domain synchronization related
stuff.
DDR sounds cool, and it might seem efficient as hell to be able to
accomplish twice as much operation in only 1 single clock cycle, but when it
comes time to backend STA timing closure, you'll regret not having that
extra slack to deal with worst path circuit delay... 阅读全帖 |
|
t*******c 发帖数: 306 | 15 谢谢楼上几位的指点,还有点小疑惑的地方是:?
1. coding style 不好,只是因为用了blocking?那把这code always里面的"=",全改成
"<=" 就可以解决这个问题了吗?
2. 为什么最好不要posedge 和 negedge 最好不要同时用呢?只是因为像caineniac 说
的,两个沿都用的话,syn的时候会导致要提高组合逻辑速度或者延长clock周期?
3. 那这个程序如果不用clock两个沿方法实现的话,还有什么其他的的简单易行方法,
使得只用clock一个沿,就可以实现上升沿写,下降沿读呢?
谢谢 |
|
p*******d 发帖数: 81 | 16 写了个很简单的小Verilog程序,Synplify老是警告说:Input MOSI is unsed!
请问高人,到顶是什么原因呀? MOSI明明在我程序里是要用的一个输入信号呀。
求解答?
程序如下:
module spiSniffer2(SCK, MOSI, SSEL, LED);
input SCK;
input MOSI;
input SSEL;
output reg LED;
reg [4:0] shiftCnt; // counter for the shift register
reg [23:0] cc2420Reg0;
reg [23:0] RegTmp;
always@(posedge SCK)
if(SSEL)
begin
RegTmp <= 0;
shiftCnt <= 0;
LED <= 0;
... 阅读全帖 |
|
c*******c 发帖数: 726 | 17 这个应该是在做timing violation check,整个表达式应该怎么理解,主要是
‘=>’,‘dout[0]+’的那个‘+’,还有后面三组时间的含义
( posedge clk => ( dout[0]+: DOUT_BUF[0] ) ) = (0.576756082389603:0.
576756082389603:0.576756082389603, 0.576756082389603:0.576756082389603:0.
576756082389603, 0.418521003988115:0.418521003988115:0.418521003988115); |
|