[an error occurred while processing this directive]
|
Видимо Вам так никто и не ответит.
По большому счету можно работать по обоим фронтам,
а можно и клок замешивать (что не есть хорошо). Есть примеры
module del1_5 // DAVE JOHNSON
(
input clk,
output clk_del1_5
);
reg dff_a;
reg dff_b;
wire ili_ne;
assign clk_del1_5 = ili_ne;
always @(posedge clk)
begin
dff_a <= ili_ne;
end
always @(negedge clk)
begin
dff_b <= ili_ne;
end
assign ili_ne = ~(dff_a | dff_b);
endmodule
второй вариант от Xilinx. Накручено так, что без таблицы истинности непонять.
Можно с сайта скачать.
module del1_5_xilinx /// xl33_30.pdf
(
input clk,
output clk_del1_5
);
reg dff_a;
reg dff_b;
wire ili_2;
wire out;
always @(posedge clk)
begin
dff_a <= ~dff_b & ~dff_a;
dff_b <= dff_a;
end
assign out = ili_2;
assign ili_2 = (clk & out) | (~clk & dff_b);
assign clk_del1_5 = ili_2 | dff_a;
endmodule
Ну и по нашему. По бразильски.
module del1_5_ct
(
input clk,
output clk1_5
);
reg [1:0] ct;
reg [1:0] ct_a;
always @(posedge clk) begin
if (ct == 2'b10) ct <= 2'b00;
else ct <= ct +1'b1; end
always @(negedge clk) begin
ct_a <= ct; end
assign clk1_5 = (ct[0] & ct_a[0]) | (~ct[1] & ct_a[1]);
endmodule
E-mail: info@telesys.ru