- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using Quartus Prime 17.1 and I am trying to use SCLR port of the flip flop to synchronously reset the flip flop, however it synthesize a mux driven by reset input. My code is:
module ff(clk, q,a,b, reset,ce,asynch_load,data,synch_reset,synch_load);
input logic clk,a,b,reset,ce,asynch_load,data,synch_reset,synch_load;
logic d;
output logic q;
assign d = ((((q&a)|b)));
always @ (negedge reset or posedge asynch_load or posedge clk)
begin
// The asynchronous reset signal has highest priority
if (!reset)
begin
q <= 1'b0;
end
// Asynchronous load has next priority
else if (asynch_load)
begin
q <= data;
end
else
begin
// At a clock edge, if asynchronous signals have not taken priority,
// respond to the appropriate synchronous signal.
// Check for synchronous reset, then synchronous load.
// If none of these takes precedence, update the register output
// to be the register input.
if (ce)
begin
if (synch_reset)
begin
q <= 1'b0;
end
else if (synch_load)
begin
q <= data;
end
else
begin
q <= d;
end
end
end
end
endmodule
And here is the RTL of synthesized architecture: https://alteraforum.com/forum/attachment.php?attachmentid=14868&stc=1 How could I use SCLR input to reset the flip flop value?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't see what the problem is... The synthesized RTL will set the output synchronously to 0 if the synch_reset output is 1, which is the definition of a synchronous reset. The registers in the FPGA don't have a dedicated synchronous reset pin if I'm not mistaken so the behaviour is created with logic around the D synchronous input.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
isn't the SCLR port in the flip flop shown in the RTL schematic is for the "Synchronous Clear"? and why is it driven to "1'h0"? and what exactly is "1'h0'?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In this old post, the code is very close to, but not exactly matching the template in Quartus that would use the synchronous reset correctly. I checked the template in the tool in 20.1 and it should be "if (!synch_reset)" instead of "if (synch_reset)" to match the active low synchronous reset of the flip-flop in the device. As such, Quartus generated extra logic to conform with this active high synchronous reset. But then the Design Recommendations user guide (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug-qpp-design-recommendations.pdf) conflicts with that saying sclr is active high and sload is active low! So I'm not sure which combination would lead to direct connections to the flip-flop without extra logic without trying them out (and it might be different between different target devices). "1'h0" is the single bit input into sclr set to 0 to provide the active high sclr functionality specified in the code based on the synch_reset input of the design driving the select line of that mux.
#iwork4intel
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page