
begin
forever # 5 clk = ~ clk
end
直接用always # 5 clk = ~ clk 就可以。
time_div 模块寄存器没有复位,通常有个初始值,如:
always @ (posedge clk or negedge rst)
if (!rst)
begin
count <= 2'b00
div4 <= 1'b0
div8 <= 1'b0
end
else
。。。
不复位的话,寄存器输出为不定值,后面的语句就都有可能为X
给你写一个例子,下面是一个设计文件和一个对应的测试程序,希望能起到抛砖引玉的和用:/*
File Name : test.v
Author: www.flxc.net
Data : 2010-10-14 20:20:52
Description : This module is to shift the 32 bit input data with clock edges.
*/
`timescale 1ns/1ns
`define period 10
module test(
clk,
rst_n,
data_i,
data_o
)
input clk
input rst_n
input [31:0] data_i
output [31:0] data_o
reg [31:0] data_o
always@(posedge clk or negedge rst_n)
beg
if(!rst_n)
data_o <= 32'b0
else
data_o <= data_i >>1
end
endmodule
module test_tb
reg clk
reg rst_n
reg [31:0] data_i
wire [31:0] data_o
initial
begin
clk=1'b1
rst_n=1'b1
data_i=32'b1010_1111_1000_1111_1111_0000_0001_0000
#(`period/3)
rst_n=1'b0
#(`period/3)
rst_n=1'b1
#100000000
$stop
end
always #(`period/2) clk=~clk
endmodule
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)