2016-05-03 2 views
0

Скажем, я хотел бы иметь FIFO, что делает что-то вроде этого:Как динамически размер FIFO реализован в Verilog

local_max_fifo local_max_save 
(
    .clk (clk), 
    .rst (rst), 
    .din (local_max_in), 
    .dout (local_max_out), 
    .wr_en (local_max_write_data), 
    .rd_en (local_max_read_data) 
); 

Есть ли способ сделать это так, чтобы все FIFOs в проекте использовать те же пул памяти фиксированного размера? Таким образом, у меня могло бы быть 10 FIFO в моем проекте, но все 10 FIFO используют один и тот же пул памяти

+0

Вы хотите * параметризовать * глубину FIFO? – sharvil111

+1

Если это имеет смысл, зависит от ряда конкретных параметров конструкции, например. могут записываться и считываться каждый цикл, является переменной задержкой для чтения или записи, приемлемой, каков размер данных, какое количество накладных расходов приемлемо и т. д. Недостатком общего пула является накладные расходы и ограниченное количество портов на физическом воспоминания, поэтому чтение/запись для некоторых FIFO, возможно, придется ждать, пока другие не будут завершены. Поэтому, в конце концов, это не столько вопрос о дизайне, который использует Verilog, но и вопрос архитектуры. –

+0

из того же пула памяти, вы имеете в виду большую память, разделенную поровну между 10Fifos в вашем случае? – Sourabh

ответ

0

Ваш вопрос недостаточно ясен, по крайней мере, для моего понимания.

Если вы пытаетесь использовать один и тот же физический ресурс («ФИФА») для 10 различных вычислений, вы можете использовать мультиплексирование, зная, что любые данные, поступающие с невыбранных каналов, будут потеряны. Если это то, что вы пытаетесь сделать; использование контрольной линии с мультиплексорами должно позволить вам использовать один и тот же физический FIFO. Я не уверен, что это то, что вы ищете.

+0

Это не дает решения, это должен быть комментарий. Вы сможете прокомментировать, когда достигнете репутации 10. – SZenC