汎用遅延素子2
概要
(詳細記述予定)
動作確認
ツール |
バージョン |
結果 |
NC-Verilog |
|
未確認 |
VCS-MX |
|
未確認 |
ModelSim |
|
未確認 |
Cver |
|
未確認 |
テストコード
(概要を記述予定)
(実行方法を記述予定)
パタン1
(パタン内容を記述予定)
initial begin
//verilogテストパタン1
end
(実行結果1)
ソースコード
ファイル1
module pulse_delay (
CLK ,
RST_X ,
i_SIN ,
o_SOUT
);
///////////////////////////////////////
// Parameter
parameter P_DLY = 10 ;
parameter P_CW = 4 ;
///////////////////////////////////////
// Ports
input CLK ;
input RST_X ;
input i_SIN ;
output o_SOUT;
///////////////////////////////////////
// Register
reg r_sin ;
reg r_ce ;
reg [( P_CW - 1 ):0] r_cnt ;
reg r_sout ;
///////////////////////////////////////
// Wire
wire w_ce_on ;
wire w_ce_off ;
wire w_ce_nxt ;
wire [ P_CW - 1 :0] w_clv ;
wire [ P_CW - 1 :0] w_cnt_nxt;
///////////////////////////////////////
// Function
always @( posedge CLK or negedge RST_X )begin
if( ~RST_X )begin
r_sin <= 1'b0;
end else begin
r_sin <= i_SIN;
end
end
assign w_ce_on = {r_sin, i_SIN} == 2'b01 ? 1'b1 : 1'b0;
assign w_ce_off = &{r_ce, r_cnt} ;
assign w_ce_nxt = |{w_ce_on, &{~w_ce_off, r_ce}} ;
always @( posedge CLK or negedge RST_X )begin
if( ~RST_X )begin
r_ce <= 1'b0;
end else begin
r_ce <= w_ce_nxt ;
end
end
assign w_clv = ( 2 << P_CW ) - P_DLY ;
assign w_cnt_nxt = w_ce_on ? w_clv :
~w_ce_nxt ? {(P_CW){1'b0}} :
r_cnt + 1'b1 ;
always @( posedge CLK or negedge RST_X )begin
if( ~RST_X )begin
r_cnt <= {(P_CW){1'b0}};
end else begin
r_cnt <= w_cnt_nxt ;
end
end
always @( posedge CLK or negedge RST_X )begin
if( ~RST_X )begin
r_sout <= 1'b0;
end else begin
r_sout <= &{w_ce_nxt, w_cnt_nxt} ;
end
end
assign o_SOUT = r_sout ;
endmodule
(概要を記述予定)
ファイル2
(概要を記述予定)
最終更新:2009年01月08日 19:39