Я разрабатываю FPGA для приложения беспроводной связи.Я бы хотел уменьшить энергопотребление и количество логических элементов конструкции (осталось очень мало логических элементов, но много блочной оперативной памяти).Будет ли использование блока оперативной памяти правильным выбором?Есть ли лучший вариант?
Мне интересны две ситуации: 1) Мне нужно сохранить некоторые статические параметры для сбора информации о датчике (например, команды инициализации АЦП, отправленные через SPI, которые всегда будут одинаковыми)2) Мне также нужно буферизовать данные АЦП до тех пор, пока у меня не будет достаточно выборок для отправки полного пакета (например, собрать 16 выборок с АЦП и затем передать данные).
В настоящее время я храню как статические, так идинамические данные как «логика» (например, при записи системного verilog «логическая команда [1] = 32'hABCDABCD;» и т. д. для статических команд при выполнении чего-то подобного для буфера данных.
При переключении наБлок оперативной памяти помогает снизить энергопотребление? У меня есть ощущение, что это поможет уменьшить количество логических элементов, используемых в моем проекте, но я не уверен, как это повлияет на энергопотребление.
Спасибо за комментарии / предложения. IСейчас я работаю над тем, чтобы опробовать его, но хотел бы услышать мнение сообщества, если у него есть другие идеи.
//EXAMPLE OF THE STATIC COMMANDS BEING USED
//Commands for the ADC.
logic [DEPTH_I-1:0] [WIDTH-1:0] initCmds
//Define the commands
always_comb
begin
initCmds[0] = 32'hC0FF0000; //Read(255) dummy cmd
initCmds[1] = 32'h80200000; //Disable Stimulation
initCmds[2] = 32'h80210000; //Disable Stimulation
initCmds[3] = 32'h8026FFFF; //Turn ON all DC amps
initCmds[4] = 32'h6A000000; //CLEAR - Set ADC Calibration
...
end
//EXAMPLE OF THE DATA BUFFER BEING USED//
logic [DEPTH-1:0] [(4*WIDTH)-1:0] dataPkt;
assign dataOut = {dataPkt[0],
dataPkt[1],
dataPkt[2],
dataPkt[3],
dataPkt[4]};
...(some state machine code that sends command i to ADC, gets data, and stores as a dataPkt[i])...