jenya7 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Я получаю пакеты по 8 байт. Я хочу организовать место для хранения 16 таких пакетов. Это не FIFO потому что я должен иметь возможность считать данные с любого пакета. Как лучше реализовать такую задачу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Я получаю пакеты по 8 байт. Я хочу организовать место для хранения 16 таких пакетов. Это не FIFO потому что я должен иметь возможность считать данные с любого пакета. Как лучше реализовать такую задачу? 16 64-битных регистра или память с адресом в 4 разряда, если не требуется записывать(считывать) одновременно в несколько ячеек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 (изменено) · Жалоба 16 64-битных регистра или память с адресом в 4 разряда, если не требуется записывать(считывать) одновременно в несколько ячеек. а не лучше создать entity и потом сгенерировать 16? или так? type can_mailbox is record --can header sid0 : std_logic_vector(7 downto 0); sid1 : std_logic_vector(7 downto 0); eid0 : std_logic_vector(7 downto 0); eid1 : std_logic_vector(7 downto 0); dlc : std_logic_vector(7 downto 0); --can data data0 : std_logic_vector(7 downto 0); data1 : std_logic_vector(7 downto 0); data2 : std_logic_vector(7 downto 0); data3 : std_logic_vector(7 downto 0); data4 : std_logic_vector(7 downto 0); data5 : std_logic_vector(7 downto 0); data6 : std_logic_vector(7 downto 0); data7 : std_logic_vector(7 downto 0); end record; type array_can_mailbox_t is array (0 to 15) of can_mailbox; Изменено 2 февраля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба а не лучше создать entity и потом сгенерировать 16? Я не привязывался к способу или языку реализации, а высказал мнение, что есть 2 метода решения Вашей задачи - либо через регистры, либо через память (если возможно). От этого выбора и будет зависеть описание. или так? А покомпактнее нельзя? Я просто VHDL не помню, на verilog для реализации с помощью регистров так: reg [63:0] data [0:15]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 (изменено) · Жалоба Я не привязывался к способу или языку реализации, а высказал мнение, что есть 2 метода решения Вашей задачи - либо через регистры, либо через память (если возможно). От этого выбора и будет зависеть описание. А покомпактнее нельзя? Я просто VHDL не помню, на verilog для реализации с помощью регистров так: reg [63:0] data [0:15]; мне кажеться рекорд удобней. не надо выковыривать данные. все уже разложенно по полочкам. можно и так type can_mailbox is array(0 to 12) of std_logic_vector(7 downto 0); но рекорд как мне кажется наглядней. Изменено 2 февраля, 2017 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 3 февраля, 2017 Опубликовано 3 февраля, 2017 · Жалоба Я получаю пакеты по 8 байт. Я хочу организовать место для хранения 16 таких пакетов. Это не FIFO потому что я должен иметь возможность считать данные с любого пакета. Как лучше реализовать такую задачу? Смотрите ARRAY Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться