Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17254 Discussions

help with size optimization

Altera_Forum
Honored Contributor II
1,032 Views

Hi All, 

 

I am new to Verilog, and am hoping someone may have some suggestions how to make the output from this code smaller. 

 

Lots of detail associated with the module has been removed until I end up with a small sample that appears to compile to quite a large chunk of LEs (about 100). 

 

This seems a huge amount of real-estate given the simplicity of the state machine etc. 

 

Any thoughts appreciated. 

 

Thanks, 

 

Mark 

 

================ 

 

module needs_optimization 

input clk, 

input [17:0]data, 

input start, 

output reg [7:0]d_out, 

output reg busy 

); 

 

 

reg [4:0] state; 

reg [17:0] input_data; 

reg [7:0] output_LSB; 

 

 

always @(posedge clk) 

begin  

if(start)  

begin 

state <= 0; 

d_out <= 0; 

input_data <= data; 

end 

else if(state < 14) 

begin 

if(input_data[16]) // MSB processing stripped 

state <= 14; 

else 

state <= state+1; 

end 

else if(state == 14) 

begin 

state <= 15; 

output_LSB <= 11; // LSB processing stripped (output_LSB can be 0..11) 

end 

else if(state == 15) 

begin 

state <= 16; 

d_out <= d_out + output_LSB; 

end 

else if(state == 16) 

begin 

state <= 17; 

d_out <= (d_out << 1); 

end 

end 

endmodule
0 Kudos
0 Replies
Reply