Jump to content

    
Sign in to follow this  
alexsandr-ter

массив STD_LOGIC_VECTOR vs FIFO

Recommended Posts

Кто может сказать преимущества FIFO перед массивом STD_LOGIC_VECTOR?

И в каких случаях лучше использовать массив STD_LOGIC_VECTOR?

в чем конкретно вопрос?

Share this post


Link to post
Share on other sites

Массив - доступ к любому члену в любой момент

фифо - доступ только к самому ране добавленному и ни к каким другим

 

Массив при добавлении элемента надо всегда знать какая ячейка не занята.

фифо - просто добавляете элементы и они добавляются на свободное место

 

Данные в массиве хранятся всегда

фифо вычитали данное, и нет больше данных

 

 

Share this post


Link to post
Share on other sites

Еще не забывайте об используемых ресурсах:

фифо - на ячейках памяти (даже минимальное фифо задействует целый блок памяти)

массив - на регистрах.

Бывает, что лишней памяти уже нет, а нужно добавить фифо, в этом случае приходится делать на регистрах.

Share this post


Link to post
Share on other sites
Еще не забывайте об используемых ресурсах:

фифо - на ячейках памяти (даже минимальное фифо задействует целый блок памяти)

массив - на регистрах.

Бывает, что лишней памяти уже нет, а нужно добавить фифо, в этом случае приходится делать на регистрах.

Это происходит из-за фундаментального различия массива регистров и фифошки : массив регистров подразумевает _одновременный_ доступ на запись и(в некоторых случаях или) чтение к каждому регистру.

В случае фифошки доступ на запись есть только к "голове", а на чтание - только к "хвосту". Если использовать обычную блочную память, то всё равно одновременный доступ есть только к одному элементу. В случае двухпортовки

элементы на запись и чтение могут быть разные.

Share this post


Link to post
Share on other sites
Это происходит из-за фундаментального различия массива регистров и фифошки : массив регистров подразумевает _одновременный_ доступ на запись и(в некоторых случаях или) чтение к каждому регистру.

В случае фифошки доступ на запись есть только к "голове", а на чтание - только к "хвосту". Если использовать обычную блочную память, то всё равно одновременный доступ есть только к одному элементу. В случае двухпортовки

элементы на запись и чтение могут быть разные.

Я как-то склоняюсь к тому, что если необходим частый доступ к небольшому массиву информации, то лучше использовать массивы, а если объем информации большой, то лучше фифо. В том числе с учетом времени компиляции проекта.

Share this post


Link to post
Share on other sites
Что-то мне эта беседа напоминает фундаментальный вопрос из древних времен: "Подскажите, а чем отличаются internet и ethernet?"

:biggrin:

Share this post


Link to post
Share on other sites
Я как-то склоняюсь к тому, что если необходим частый доступ к небольшому массиву информации, то лучше использовать массивы, а если объем информации большой, то лучше фифо. В том числе с учетом времени компиляции проекта.

 

 

а если мне надо случайный доступ к большому объему информации? Что мне вычитывать фифо до нужной ячейки, а все прочитанное в него загружать обратно каждый раз?

 

фифо - последовательный доступ

массив регистров - случайный

 

и нет вопроса в объеме данных, фифо может быть на 3-4 команды, да хоть на 2 команды...

Share this post


Link to post
Share on other sites

Как фифо, так и массив данных можно реализовать и на блоках памяти и на регистрах.(в verilog задаётся атрибутами) По сути, отличие фифо от массива регистров отличается в обвязке. Вы можете реализовать фифо на массиве регистров и потратить время на его отладку. А можете использовать готовое, уже отлаженное и оптимизированное производителем.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this