verilog学习 (二)

晚上无聊,接着写第二篇吧.

第一个实用的代码就用D出发器吧.很简单

module d_flip(d,clk,q);
input d,clk;
output q;

wire d,clk;
reg q;

always @ (posedge clk)
begin
q <= d;
end
endmodule


解释如下,always想当于一直在运行,当 clk上升(posedge)时运行下面的语句`q<=d;`

( 对应的VHDL语句是process(clk) begin if (clk'event and clk = '1')q<=d end )

总体看来还是差不多,但是到数据类型时感觉verilog明显好多了.

变量定义部分发现与旧式c语言的样子差不多 o(∩_∩)o.变量类型很重要,因为verilog是硬件语言,脑子里还是得有一些模型的,需要寄存器的变量是reg类型的,如果是从外部引线传过来的话是使用wire类型.

写完模块后需要写测试部分.测试部分也是标准的verilog代码.关于测试代码http://www.asic-world.com/verilog/art_testbench_writing.html这里有专门的一段的`

如下:

module D_te();

reg clk,d;
wire q;

initial
begin
$dumpfile("d_out.vcd");
$dumpvars(0,D_te);

$display("D flip test");
$monitor("time = %g clk= %d d = %d p = %d",
$time,clk,d,q);
clk = 0;
d = 0;
#2 d = 1;
#3 d = 0;
#4 d = 1;
#1 $finish;
end
always
#1 clk = ~clk;

d_flip D0(d,clk,q);
endmodule


编译,运行 结果如下:

gtkwake结果如下:

好了,睡觉 zzzZZZz.

 

 

 

 

转载于:https://www.cnblogs.com/zhuangzhuang1988/archive/2012/03/31/2427772.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值