2015-10-18 2 views
0

Я хочу создать синтезируемый 64-разрядный полный сумматор, поэтому мне нужно создать экземпляр модуля 64 раза, что делает код громоздким. Может ли кто-нибудь предложить альтернативный способ свести к минимуму код?синтезируемый 64-разрядный полный сумматор в verilog

+1

Используйте ** сгенерируйте **, чтобы свести к минимуму ваш код. Взгляните на это более подробно: http://stackoverflow.com/a/5595254/3951497 – ssgr

+1

Не могли бы вы объяснить, почему ваше здание 64-битного сумматора с использованием 1 битового сумматора 64 раза? – Morgan

+0

Генерируется синтезируемым? – kartik

ответ

0

Если ваш не пытаясь понять структуру дизайна уровней ворот, используя синтезируемого RTL гораздо проще:

localparam WIDTH = 64; 
reg [WIDTH-1:0] a; 
reg [WIDTH-1:0] b; 
reg [WIDTH-1:0] sum; 
always @* begin 
    sum = a + b; 
end 


// to make output sync, put through flip flop 
reg [WIDTH-1:0] sum_flop; 
always @(posedge clk) begin 
    sum_flop <= sum; 
end 

Это может быть переписано в виде следующего кода, но будет генерировать такое же оборудование.

localparam WIDTH = 64; 
reg [WIDTH-1:0] a; 
reg [WIDTH-1:0] b; 
reg [WIDTH-1:0] sum_flop; 

always @(posedge clk) begin 
    sum_flop <= a + b; 
end 
+0

Я хочу, чтобы мой полный сумматор принимал вход в 1-й тактовый импульс, обрабатывал его и выдавал выходной сигнал в следующем тактовом импульсе. Как мне это сделать?? – kartik

+0

Положите сумму через флип-флоп. – Morgan

Смежные вопросы