时序逻辑UDP,以D型边沿触发器为例建模。
primitive ff(q,clk,d);
output q;
input clk,d;
reg q;
initial q = 0;
table
//clk data q(state) q(next)
(01) 0: ?: 0; //(01) 表示上升沿,由0到1。
(01) 1: ?: 1;
(0x) 1: 1: 1; //(0x) 表示0到x。
(0x) 0: 0: 0;
(?0) ?: ?: -;
? (??): ?: -; //(??)表示任意转换
endtable
endprimitive
UDP对应tesetbench
`timescale 1ns/1ns
module test_ff;
reg clk,d;
wire q;
reg clk2;
initial
begin
clk = 0;
d = 0;
clk2 = 0;
end
always #3 clk =~clk;
always #2 clk2= ~clk2;
always @(posedge clk2)
begin
d = {$random}%2;
end
ff m0(q,clk,d);
endmodule
仿真波形如下,输出q在clk的上升沿保持d的状态。
文章评论(0条评论)
登录后参与讨论