Hallo zusammen,
ich habe mal angefangen mich ein wenig mit Verilog zu beschäftigen.
Also dachte ich mir mal einen D-FlipFlop zu bauen, aber auf Grund von
Primitiven (mit einfach if-Abfragen ist das ja kein Problem).
Hier das Verilog-Template für ein Flipflop in Altera Quartus 6.1:
// Quartus Verilog Template
// Clearable flipflop with enable
module flipflop
(
input d,
input clock,
input clrn,
input ena,
output q
);
reg q_reg;
always @ (posedge clock or negedge clrn)
begin
if (clrn == 1'b0)
begin
q_reg <= 'b0;
end
else if (clock == 1'b1)
begin
if (ena == 1'b1)
q_reg <= d;
end
end
assign q = q_reg;
endmodule
So ist das auch kein Problem ;)
Nur wie ich geschrieben habe, würde ich das Flipflop gerne auf Grund der
vorhandenen Gatter sprich NANDs konstruieren, ohne if-else-Zweige.
In der Simulation läuft das schon (jedenfalls im Xilinx ISE Simulator.
Hatte gerade keinen vernünftigen zur Hand). Nur, daß du durch den always
Block eine Verzögerung um einen Takt erhälst. Der erzeugt dir ja schon
dein gewünschtes D-FlipFlop. Zwar ohne reset, aber das hat deine
Schaltung ja auch nicht.
Reichen tut da ja schon folgender Code:
1
always@(posedgec)begin
2
out1<=c;
3
out2<=~c;
4
end
Liefert die korrekte Funktion mit weniger Text und ist Synthesefähig.
Jedenfalls mit ner verlässlichen Timingabschätzung. Die wird es bei
deiner Version eher nicht geben.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.