verilog中@()语句的探索与讨论

上一篇 / 下一篇  2007-08-17 21:46:06

查看( 301 ) / 评论( 13 )
在电路的设计中实时遇到这种情况 @(),我们通常遇到的是always @()这种情况,为此我写了个测试代码,以讨论
9a jze v202711 EDA中国门户网站H rXb%s4|
module a(clock,a,b,c);EDA中国门户网站'X+lS(x`5XG1w
input a,b,clock;
9e2IL'SV R$JzWd202711 output c;
V\ KH!n h&O202711 reg tmp;EDA中国门户网站hu^t0Y h^(M
always @(posedge clock)  
m,S:|Z;@O+T j s202711 beginEDA中国门户网站'vm#R6PXQ
  @(posedge a or posedge b)  //注意这儿EDA中国门户网站'z u(rW2v#w
  tmp=a+b;EDA中国门户网站Ry[o`GA:_
end
(r2V)G)F)f{w{eg202711
assign c=tmp;
JC!TJf5\7f0@202711 endmodule  
!u5Cuo+q8n202711 EDA中国门户网站K|9W I1I@$^
在quartus下综合可综合EDA中国门户网站;m+G aX&vj|+L
EDA中国门户网站 _1yn/i'OQ'wr
综合出来的的电路图与波形如下所示EDA中国门户网站,u rC MD(j At
EDA中国门户网站,yQ5H;ien!a*^%K
你看懂其中的意思了没?EDA中国门户网站+na ?S!w\^$v5R:R:I
EDA中国门户网站LQ)u L ~R#HY6\
[ 本帖最后由 reader7510 于 2007-8-22 13:38 编辑 ]
5e"qi6z*vF^0Y? s202711
Z gvE$^ \i202711@().jpgEDA中国门户网站#F;G ^/bA

sXi8_ ~FC:c202711@()_1.jpg
e6IH#ttuT3J202711EDA中国门户网站#bB1U"__
@()_a.JPG
FPGA/CPLD器件价格查询

TAG:

bingling发布于2007-08-18 17:10:34
还真有点意思
zhouhuaguo发布于2007-08-19 01:53:14
看不明白EDA中国门户网站z)Y3guI/WL~M
,请高手指点
demonsolar的个人空间 demonsolar 发布于2007-08-19 22:09:51
其实就是一个简单的加法器,只是输出是在时钟的控制下而已,
U.@g^9Z
MEDA中国门户网站
@() 是指满足括号中的内容的条件下只执行一次
_"N`wSln而前面加一个always 是指只要条件满足就一直执行
nico0811发布于2007-08-20 11:42:41
这还可以综合??不可思议,没用过,最起码不是好的代码风格
tolrave发布于2007-08-20 17:52:56
kan bu dao
tolrave发布于2007-08-20 17:54:10
其实就是一个简单的加法器,只是输出是在时钟的控制下而已,www.edacn.net        bX+ZB        D%Lh
@() 是指满足括号中的内容的条件下只执行一次最专业的FPGA/IC设计论坛dIKV[{VuM
而前面加一个always 是指只要条件满足就一直执行
reader7510的个人空间 reader7510 发布于2007-08-21 13:19:54
回复 #4 demonsolar 的帖子
你说的很正确,我就是在知道@()什么意思的前提下,看看究竟在电路中能不能实现。这种设计不知在电路中是否常用到。一般在什么情况下用它。
D
e:L
hr最专业的FPGA/IC设计论坛
谢谢!
allendragoon发布于2007-08-21 21:42:20
比较奇怪
看了时序仿真图,感觉太奇怪了。时钟似乎不应在值变化时翻转。
~#\
p'L L9lwww.edacn.net
难道没有建立时间与保持时间吗?
fishman_yu发布于2007-09-20 01:32:30
有意思,学习
chance_mouse发布于2007-09-22 11:30:05
以前没有见过这样写的,有何妙用呀???
reader7510的个人空间 reader7510 发布于2007-09-22 14:39:43
在好多的仿真文件中可能会见到这样的,在设计的可综合的文件中,截至现在我没有见过
Yvd%Rimwww.edacn.net一下是一个双端口RAM的测试,来自Actel的官方文件中
N@Zus6K"F(BFPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board`timescale 1 ns/100 ps为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章S.EJ m&|^F
module test;
lRA v
f k&K z        J为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章
parameter width = 8; // bus widthEDA中国门户网站'w#x&lt        Nc@k)j&D
parameter addr = 8; // # of addr lines
J8Z8J a;b/?I#k最专业的FPGA/IC设计论坛parameter numvecs = 20; // actual number of vectors
"Oq5kWZ6vWparameter Clockper = 1000; // 100ns periodwww.edacn.netKb1{/s-}cvb
reg [width-1:0] Data;为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章/kaeM7yg$X
reg [addr-1:0] WAddress, RAddress;
lX8AIM}&AR J为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章reg Clock, WE, RE,rst;  //addition rst为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章"t_$u,A&y\+f1oD0];i|RH
reg [width-1:0] data_in [0:numvecs-1];www.edacn.net3TKm$[j$\
reg [width-1:0] data_out [0:numvecs-1];
G LxeKC        bwire [width-1:0] Q;
g7k7[6L#DA为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章integer i, j, k, numerrors;
7Wf\HT5A!y IvFPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardram u0(.data(Data), .q(Q), .clk(Clock),为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章4EF-X8f(enG1V_$|
se

.rst(rst),FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board^p C;V.me4Q
.wen(WE),
-^RDlxw:r{7ZEDA中国门户网站.ren(RE), .waddr(WAddress), .raddr(

It
FR]
B(bwww.edacn.net
RAddress));为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章(^?9y(_i
initial
E u/L]jS'F` [        lbegin
IA(l?W:P+u2O
f/eEDA中国门户网站
// sequential test patterns entered at neg edge Clock
1A_4TMmQV9xa为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章data_in[0]=8'h00; data_out[0]=8'hxx;最专业的FPGA/IC设计论坛b'g}3j`-}
data_in[1]=8'h01; data_out[1]=8'hxx;
r-s [.m)MQQ7F)Xr为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章data_in[2]=8'h02; data_out[2]=8'hxx;最专业的FPGA/IC设计论坛f+T-VE]
data_in[3]=8'h04; data_out[3]=8'hxx;www.edacn.netY}u ]o p _F
data_in[4]=8'h08; data_out[4]=8'hxx;最专业的FPGA/IC设计论坛5_)ms1K
YK n
la(T4o5C

data_in[5]=8'h10; data_out[5]=8'hxx;FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board%riwS9b#}(S;XV
data_in[6]=8'h20; data_out[6]=8'hxx;#R#CyO(XWz6I
data_in[7]=8'h40; data_out[7]=8'hxx;w8U'dKG/l/x
data_in[8]=8'h80; data_out[8]=8'hxx;
g:j\2FO.UT9Nwww.edacn.netdata_in[9]=8'h07; data_out[9]=8'h01;FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardGRhh|U,ah[
data_in[10]=8'h08; data_out[10]=8'h02;
l?!R/@|www.edacn.netdata_in[11]=8'h09; data_out[11]=8'h04;为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章1Z]5R'o@^[3sX o
data_in[12]=8'h10; data_out[12]=8'h08;
#|&d;Vd3w:l
yw-K.]
data_in[13]=8'h11; data_out[13]=8'h10;最专业的FPGA/IC设计论坛#`5P5_+VB
data_in[14]=8'h12; data_out[14]=8'h20; C1}A(thF@$EM%C
data_in[15]=8'h13; data_out[15]=8'h40;
lD9I:X\)~7L为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章data_in[16]=8'h14; data_out[16]=8'h80;
GTTOq([!UxFPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boarddata_in[17]=8'haa; data_out[17]=8'h80;
eH O'Q[4q9\ _y1xYEDA中国门户网站data_in[18]=8'h55; data_out[18]=8'haa;
4A%U3qzf2q4]最专业的FPGA/IC设计论坛data_in[19]=8'haa; data_out[19]=8'h55;EDA中国门户网站x%tc&P\,gX\$]%b
end
e jC"X
G6sh1Fwww.edacn.net
initialwww.edacn.net^
A
}VA'~Q        D*}B ?

begin为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章V
TG9C.FP

rst=0;FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardP({?A9?3`,bhsG
Clock = 0;EDA中国门户网站$Cmq M ~+h"Y
T

WE = 0;最专业的FPGA/IC设计论坛o)_!c6@9N`7d$Vhp_
RE = 0;
-a NFW8}EH
Q!r\3EEDA中国门户网站
WAddress = 0;最专业的FPGA/IC设计论坛
m'C\v#z{D-P

RAddress = 0;
5uI_`Cp5_5I Avg8M cData = 0;EDA中国门户网站8bk)f fp5V(kW
numerrors = 0;
3N8`
c~-jp Dwww.edacn.net
#200 rst=1;  //there rst reset to ram为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章q_ | k[0M
#200 rst=0;最专业的FPGA/IC设计论坛I2jBPE*E
end
m0ReZ;kalways#(Clockper / 2) Clock = ~Clock;
0K:H(J)_-{O-{Iinitial
|a&tm u({beginl7w^`~@8cB
#2450 WE = 1;`!zE!U-_
#8000 WE = 0;
R r6u'K&v6{I%dEDA中国门户网站RE = 1;
/P1c%EO$]8U"Gwww.edacn.net#8000 RE = 0;最专业的FPGA/IC设计论坛s
Xk C        z
oa0J

WE = 1;EDA中国门户网站5t Mz;x9D
#1000 RE = 1;
xh/_8^:U-sod
V        Q最专业的FPGA/IC设计论坛
endwww.edacn.net
_ Vb`$d

initial
b6F#X6eP0|*NpFwww.edacn.netbegin
kB'JH7^9zK为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章#1450;最专业的FPGA/IC设计论坛
@KD,I4VF9c

for (k = 0; k <= width; k = k + 1)
1VtX5r?2LQc;Swww.edacn.net#1000 WAddress = k;最专业的FPGA/IC设计论坛        L S*x*xqP&?
WAddress = 0; u]2n+Q|4?@
end
X \Mc"C7F&|i~T最专业的FPGA/IC设计论坛initial
i6Ao~e2Y\#it!iwww.edacn.netbegin
l$HZ.V        V thIwww.edacn.net#9450;FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board
Z        f(tp e"T g

for (j = 0; j <= width; j = j + 1)最专业的FPGA/IC设计论坛3JPG-E4o0wv8N-IX
#1000 RAddress = j;www.edacn.netN'FpT2C
RAddress = 0;
M5Q#h?Z[8m%f3KD为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章end
M2Aj        v!i        a0XqXwww.edacn.netinitialEDA中国门户网站4Y5k0clE
begin
+yIs_1E/JmEDA中国门户网站$display("\nBeginning Simulation...");?Z4aim
//skip first rising edge
:B2[(BG-~ uXmDI最专业的FPGA/IC设计论坛for (i = 0; i <= numvecs-1; i = i + 1)
\uG        x3h?vFwww.edacn.netbegin为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章],e
C;\;kz

@(negedge Clock);最专业的FPGA/IC设计论坛 M@)h!jH6D4@
// apply test pattern at neg edge
L Vm2m d%B(~V为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章Data = data_in;EDA中国门户网站_-_e*}!GE
@(posedge Clock)                                       
Y2N)\!xNVs1q#450; //45 ns later为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章s"`6UUn2J1Rj
B

// check result at posedge + 45 nsFPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board2BYeX6@#i
$display("Pattern#%d time%d: WE=%b; Waddr=%h; RE=%b; Raddr=%h; Data=%h; Expected Q=%h;Actual Q=%h", i, $stime, WE, WAddress, RE, RAddress,Data, data_out, Q);为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章$S+z)_:_:U#]
if ( Q !== data_out )FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardG\$w2rKYc2}
beginFPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardH-E        qaeL
$display(" ** Error");
h%fX4cBB&UEDA中国门户网站numerrors = numerrors + 1;
'`H        z;s
w(w7u,H为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章
end
2Pfs!Q.J V'V为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章end最专业的FPGA/IC设计论坛Be|
?!o6s

if (numerrors == 0)
M0pyx*M为您提供逻辑设计资料,IC设计资料,每天我们的精英团队都在提供更多的设计文章$display("Good! End of Good Simulation.");
L/T/gE%E        I _q mwww.edacn.netelse最专业的FPGA/IC设计论坛 hcB`B
if (numerrors > 1)EDA中国门户网站0LZ(D\(Z8e
Qo9M

$display(
Pp0qpU/cB/`        zEDA中国门户网站"%0d ERRORS! End of Faulty Simulation.",EDA中国门户网站*?7T xu0Q2EkL
Cp

numerrors);
W bE T8Ate s*|FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,boardelse最专业的FPGA/IC设计论坛9d:?!x"Y,OnqR
$display(最专业的FPGA/IC设计论坛:n'Q4r#O9A9es
"1 ERROR! End of Faulty Simulation.");最专业的FPGA/IC设计论坛Fz#v7hJzp.cU@:f|
#1000 $finish; // after 100 ns laterwww.edacn.netn9m4{z:s8Pk#z7zN
end
A5?:Y7@u6aendmodule
seanzhang发布于2007-09-23 12:18:01
@(posedge a or posedge b)
NO的个人空间 NO 发布于2007-09-24 14:13:58
你试着把你那行注释掉在仿真和综合最专业的FPGA/IC设计论坛rFIT tZ        q%yB
你会发现什么呢FPGA,CPLD,EDA,IC,Altera,Lattice,Xilinx,Modelsim,Synplify,Quartus,ispLever,ISE,Simulation,HDL,edacn,bbs,board%Y$w/k-FN's!R-I
你那行唯一的作用增加了一个warning罢了最专业的FPGA/IC设计论坛2L5PJi#xe
强烈不推荐在电路设计代码上创新
"xt9@o(GEDA中国门户网站hdl是硬件描述语言而不是硬件设计语言
我来说两句

(可选)

日历

« 2008-11-20  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 2263
  • 日志数: 9
  • 建立时间: 2007-08-05
  • 更新时间: 2007-09-23

RSS订阅