|
|
  |
Использование Coregen fifo_generator_v4_3 |
|
|
|
Feb 25 2011, 18:01
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Использую коргеновское фифо версии 4.3 в котором запись и чтение выполняется по разным частотам. Цитата ENTITY fifo_generator_v4_3 IS port ( din: IN std_logic_VECTOR(31 downto 0); rd_clk: IN std_logic; rd_en: IN std_logic; rst: IN std_logic; wr_clk: IN std_logic; wr_en: IN std_logic; dout: OUT std_logic_VECTOR(31 downto 0); empty: OUT std_logic; full: OUT std_logic; valid: OUT std_logic; rd_data_count: OUT std_logic_VECTOR(9 downto 0); wr_ack: OUT std_logic; wr_data_count: OUT std_logic_VECTOR(9 downto 0)); END fifo_generator_v4_3; Не понимаю назначение выводов rd_data_count, wr_data_count. В документации сказано, что rd_data_count - количество двордов, доступных для чтения, а wr_data_count - количество записанных двордов. Как это фифо подключить к Aldec'у?
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
Feb 26 2011, 11:10
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(D-Luxe @ Feb 25 2011, 21:01)  Как это фифо подключить к Aldec'у? CoreGen сделал Вам wrapper для fifo его и подтягивайте к aldec. Для моделирования wrapper ссылается на файл из XilinxCoreGenLib, найдите этот файл и подключите к проекту. А в файле wrapper уберите в use ссылку на папку XilinxCoreGenLib, пусть сразу ищет файл в проекте. rd_data_count и wr_data_count - количество считанных и записанных данных в fifo.
|
|
|
|
|
Feb 26 2011, 11:34
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(Mad_max @ Feb 26 2011, 14:10)  CoreGen сделал Вам wrapper для fifo его и подтягивайте к aldec. Для моделирования wrapper ссылается на файл из XilinxCoreGenLib, найдите этот файл и подключите к проекту. А в файле wrapper уберите в use ссылку на папку XilinxCoreGenLib, пусть сразу ищет файл в проекте.
rd_data_count и wr_data_count - количество считанных и записанных данных в fifo. Что значит количество считанных??) Ты можешь бесконечно читать из него, пока в него данные пишутся, по такой логике счетчик будет сбрасываться в ноль и заново начинать счет.
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
Feb 26 2011, 11:58
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(D-Luxe @ Feb 26 2011, 14:34)  Что значит количество считанных??) Вот fifo у Вас заполнилось, флаг full в единице, считали Вы данные по первому адресу, значение rd_data_count стало равно 1, считали данные по второму адресу, значение стало 2 и так далее. А вообще fifo тем и удобно, что есть два флага full и empty, которых достаточно для организации простой логики записи и чтения пакета данных.
|
|
|
|
|
Feb 26 2011, 12:15
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(Mad_max @ Feb 26 2011, 14:58)  Вот fifo у Вас заполнилось, флаг full в единице, считали Вы данные по первому адресу, значение rd_data_count стало равно 1, считали данные по второму адресу, значение стало 2 и так далее. А вообще fifo тем и удобно, что есть два флага full и empty, которых достаточно для организации простой логики записи и чтения пакета данных. Т.е. rd_data_count + wr_data_count = емкость fifo ?
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
Feb 26 2011, 17:18
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(RobFPGA @ Feb 26 2011, 20:11)  Приветствую!
rd_data_count - число слов которые ДОСТУПНЫ для чтения из фифо в данный момент (Rd clk)
wr_data_count -число слов которые ЗАПИСАНЫ в фифо в данный момент (Wr clk)
Используются для того чтобы знать сколько можно еще записать (FIFOLEN-wr_data_count) или еще прочитать (rd_data_count ) так как при записи статус со стороны Rd обновляется с задержкой так же как и при чтении статус со стороны Wr.
Успехов! Rob. wr_data_count - rd_data_count = задержке или rd_data_count - wr_data_count = задержке ?
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
Feb 26 2011, 18:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Цитата(D-Luxe @ Feb 26 2011, 19:18)  wr_data_count - rd_data_count = задержке или rd_data_count - wr_data_count = задержке ? А зачем Вам это? Так делать нехорошо! Такой результат нельзя даже в удавах мерить  Величина задержки вещь непостоянная, относительно среднего уровня зависящего от реализации автомата в fifo, и меняется от соотношения частот Rd/Wr и временных соотношений фронтов Rd Clk/Wr Clk. Рассматривайте каждую сторону fifo как черный ящик - сторона Wr ни чего не знает о Rd (пишем данный на деревню к дедушке). Ей известно только что нельзя/можно записать и сколько если можно. Тоже и со стороны Rd (черт его знает откуда посылка пришла) - есть/нет что читать и сколько, если есть что. Ну а fifo в этом случае работает как почтальон Печкин Успехов! Rob.
|
|
|
|
|
Feb 26 2011, 18:50
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(RobFPGA @ Feb 26 2011, 21:02)  А зачем Вам это? Так делать нехорошо! Такой результат нельзя даже в удавах мерить  Величина задержки вещь непостоянная, относительно среднего уровня зависящего от реализации автомата в fifo, и меняется от соотношения частот Rd/Wr и временных соотношений фронтов Rd Clk/Wr Clk. Рассматривайте каждую сторону fifo как черный ящик - сторона Wr ни чего не знает о Rd (пишем данный на деревню к дедушке). Ей известно только что нельзя/можно записать и сколько если можно. Тоже и со стороны Rd (черт его знает откуда посылка пришла) - есть/нет что читать и сколько, если есть что. Ну а fifo в этом случае работает как почтальон Печкин Успехов! Rob. Спасибо, догнал! Тогда вопрос такой. Допустим я пишу в ФИФО езернет пакеты по частоте 125 МГц, а читаю по 100 МГц. Возможна ли такая ситуация, что на чтении существует задержка между байтами? (по простому говоря идет 10 байт пакета потом задержка в несколько тактов и дальше идет 11 байт пакета) И возможна ли такая ситуация если пакеты пишутся на 100 МГц, а читаются на 125 МГц?
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
Feb 27 2011, 23:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Да вот что значит кампари на ночь  Простите меня окаянного! Минимальная пауза - 96 бит. 9.6 mks это для 10 Mbit/s для 1G будет 96 ns и фифошку придется брать размером поболее Удачи! Rob.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|