赞
踩
module dtrigger ( input wire sclk, input wire rst_n, input wire [7:0] d, output reg [7:0] q ); //模块输入一定是wire变量 //模块输出可以是wire变量或者reg变量 //边沿触发的逻辑里都用<= 非阻塞赋值 //括号内的内容称为敏感列表(包含电平触发 和 边沿触发) //异步复位的D触发器 always @(posedge sclk or negedge rst_n) begin if(rst_n == 1'b0) q <= 8'h00; else q <= d; end //同步复位的D触发器(敏感列表区别) /* always @(posedge rst_n) begin if(rst_n == 1'b0) q <= 8'h00; else q <= d; end */ endmodule
`timescale 1ns/100 ps module dtrigger_test ( ); reg sclk; reg rst_n; reg [7:0] d; wire [7:0] q; initial begin sclk <= 1'b0; rst_n <= 1'b0; d <= 8'h00; end always #10 sclk = ~sclk; always #10 rst_n <= {$random} % 2; always #10 d <= {$random} % 256; dtrigger dtrigger( .sclk(sclk), .rst_n(rst_n), .d(d), .q(q) ); endmodule
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。