реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Асинхронное FIFO Spartan3, Странное поведение
0xFF
сообщение Feb 15 2006, 18:26
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Доброго времени суток.

Необходимо в проекте использовать асинхронное фифо. Чтобы не тратить время на построение модуля, попросил CoreGenerator (fifo_generator_v2_2) об оказании услуги. Установочки были следующими

FIFO_GENERATOR_V2_2 #(
0, // c_common_clock
0, // c_count_type
2, // c_data_count_width
"BlankString", // c_default_value
32, // c_din_width
"0", // c_dout_rst_val
32, // c_dout_width
0, // c_enable_rlocs
"spartan3", // c_family
0, // c_has_almost_empty
0, // c_has_almost_full
0, // c_has_backup
0, // c_has_data_count
0, // c_has_meminit_file
0, // c_has_overflow
0, // c_has_rd_data_count
0, // c_has_rd_rst
1, // c_has_rst
0, // c_has_underflow
0, // c_has_valid
0, // c_has_wr_ack
0, // c_has_wr_data_count
0, // c_has_wr_rst
2, // c_implementation_type
0, // c_init_wr_pntr_val
1, // c_memory_type
"BlankString", // c_mif_file_name
0, // c_optimization_mode
0, // c_overflow_low
1, // c_preload_latency
0, // c_preload_regs
512, // c_prim_fifo_type
64, // c_prog_empty_thresh_assert_val
64, // c_prog_empty_thresh_negate_val
0, // c_prog_empty_type
192, // c_prog_full_thresh_assert_val
192, // c_prog_full_thresh_negate_val
0, // c_prog_full_type
2, // c_rd_data_count_width
256, // c_rd_depth
8, // c_rd_pntr_width
0, // c_underflow_low
0, // c_use_fifo16_flags
0, // c_valid_low
0, // c_wr_ack_low
2, // c_wr_data_count_width
256, // c_wr_depth
8, // c_wr_pntr_width
1) // c_wr_response_latency
inst (
.DIN(din),
.RD_CLK(rd_clk),
.RD_EN(rd_en),
.RST(rst),
.WR_CLK(wr_clk),
.WR_EN(wr_en),
.DOUT(dout),
.EMPTY(empty),
.FULL(full),
.CLK(),
.BACKUP(),
.BACKUP_MARKER(),
.PROG_EMPTY_THRESH(),
.PROG_EMPTY_THRESH_ASSERT(),
.PROG_EMPTY_THRESH_NEGATE(),
.PROG_FULL_THRESH(),
.PROG_FULL_THRESH_ASSERT(),
.PROG_FULL_THRESH_NEGATE(),
.RD_RST(),
.WR_RST(),
.ALMOST_EMPTY(),
.ALMOST_FULL(),
.DATA_COUNT(),
.OVERFLOW(),
.PROG_EMPTY(),
.PROG_FULL(),
.VALID(),
.RD_DATA_COUNT(),
.UNDERFLOW(),
.WR_ACK(),
.WR_DATA_COUNT());
И вот получил я долгожданное фифо, но вот негаразд после первой записи только после нескольких сотен тактов стороны чтения получаю долгожданные данные. Глубину вроде задавал 256, но неужели нужно ждать чтоб получать данные.

ПОдскажите пожалуста, может я где то в установках чего напутал

Заранее благодарен.
Go to the top of the page
 
+Quote Post
Azazella
сообщение Feb 16 2006, 10:01
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 1-02-06
Из: Украина
Пользователь №: 13 850



Данные на выходе асинхронного фифо появляются при проведении оперции чтения из фифо, которое можно проводить сразу же после записи (через один или два такта точно не помню) и совсем не должно зависит от глубины фифо (это принцип фифо).
При условии, что присутствуют клоки, сняты сигналы сброса глюков быть не должно.

А еще в глаза бросились следующие настройки, может я не прав, но проверте
1, // c_preload_latency
1) // c_wr_response_latency
Go to the top of the page
 
+Quote Post
dsmv
сообщение Feb 16 2006, 11:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Сотня тактов это странно.
Вот сейчас проверил: асинхронное FIFO, данные появились на пятый такт.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Feb 16 2006, 14:42
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(dsmv @ Feb 16 2006, 14:05) *
Сотня тактов это странно.
Вот сейчас проверил: асинхронное FIFO, данные появились на пятый такт.

Даже сам не знаю что делать, может у меня CoreGenerator работает косо, либо весь ISE 7.1 sp4. Сам понимаю что это бред и так быть не должно. Но оно есть. Поставил опцию First_Word_Fall_Through ему по барабану 256 тактов говорит что мол пустой и на 257 появляется. Ума не приложу что делать.

З.Ы.: Думаю может уже кого попросить мне корку сгенирить.
Go to the top of the page
 
+Quote Post
dsmv
сообщение Feb 17 2006, 08:15
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Если надо, то могу сгенерить. А могу и своё выслать. У меня ещё есть дополнительная обвязка. В частности формирование флага ef и регистровый выход.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 17 2006, 13:47
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(0xFF @ Feb 16 2006, 09:42) *
Цитата(dsmv @ Feb 16 2006, 14:05) *

Сотня тактов это странно.
Вот сейчас проверил: асинхронное FIFO, данные появились на пятый такт.

Даже сам не знаю что делать, может у меня CoreGenerator работает косо, либо весь ISE 7.1 sp4. Сам понимаю что это бред и так быть не должно. Но оно есть. Поставил опцию First_Word_Fall_Through ему по барабану 256 тактов говорит что мол пустой и на 257 появляется. Ума не приложу что делать.

З.Ы.: Думаю может уже кого попросить мне корку сгенирить.

ip_update3 стоит ? без него СП4 с исползованием корок "жалкое подобие левой руки" (с) Старый анекдот


--------------------
Go to the top of the page
 
+Quote Post
0xFF
сообщение Feb 17 2006, 15:40
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(dsmv @ Feb 17 2006, 11:15) *
Если надо, то могу сгенерить. А могу и своё выслать. У меня ещё есть дополнительная обвязка. В частности формирование флага ef и регистровый выход.

Был бы очень рад жду вашей помощи

Цитата(des00 @ Feb 17 2006, 16:47) *
Цитата(0xFF @ Feb 16 2006, 09:42) *

Цитата(dsmv @ Feb 16 2006, 14:05) *

Сотня тактов это странно.
Вот сейчас проверил: асинхронное FIFO, данные появились на пятый такт.

Даже сам не знаю что делать, может у меня CoreGenerator работает косо, либо весь ISE 7.1 sp4. Сам понимаю что это бред и так быть не должно. Но оно есть. Поставил опцию First_Word_Fall_Through ему по барабану 256 тактов говорит что мол пустой и на 257 появляется. Ума не приложу что делать.

З.Ы.: Думаю может уже кого попросить мне корку сгенирить.

ip_update3 стоит ? без него СП4 с исползованием корок "жалкое подобие левой руки" (с) Старый анекдот


все стоит да толку никакого , вчера поставил ise8.1 та же проблема. Начал уже просто по шагам смотреть что же за ерунда. И вот что я увидел когда буфер у меня пустой он мне машет флажком пустой , а когда в него байтик ложу всё равно пустой, и так пока 256 штук не положу, только после этого говорит не пустой.

Поэтому господа если кто может, вышлете мне пожалуста асинхронный фифо "параметрируемый"


Всем откликнувшимся очень признателен
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 17 2006, 15:56
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(0xFF @ Feb 17 2006, 10:40) *
все стоит да толку никакого , вчера поставил ise8.1 та же проблема. Начал уже просто по шагам смотреть что же за ерунда. И вот что я увидел когда буфер у меня пустой он мне машет флажком пустой , а когда в него байтик ложу всё равно пустой, и так пока 256 штук не положу, только после этого говорит не пустой.

Поэтому господа если кто может, вышлете мне пожалуста асинхронный фифо "параметрируемый"


Всем откликнувшимся очень признателен



Блииин а границы "ранних" флагов у вас случайно не развернуто поставленны ?

Реальные флаги пустоты, заполнения (не ранние должны вставать после 3 -х тактов стороны принимающей флаг). Но если вы пользуетсь ранними флагами, то у вас могут быть похожие проблемы при некорректно стоящих границах.


--------------------
Go to the top of the page
 
+Quote Post
dsmv
сообщение Feb 17 2006, 16:45
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Да в общем не жалко.
На e-mail тоже выслал, на всякий случай.
Внутри архива:
ctrl_fifo512x32.edn - модуль сформирован кодогенератором, но уже не помню каким.
ctrl_fifo512x32.vhd - тоже сформирован кодогенератором
cl_fifo_control_v2.vhd - узел управления
cl_fifo512x32_v2.vhd - собственно компонент FIFO
Прикрепленные файлы
Прикрепленный файл  cl_fifo512x32_v2.zip ( 18.59 килобайт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
0xFF
сообщение Feb 17 2006, 16:49
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(des00 @ Feb 17 2006, 18:56) *
Цитата(0xFF @ Feb 17 2006, 10:40) *


все стоит да толку никакого , вчера поставил ise8.1 та же проблема. Начал уже просто по шагам смотреть что же за ерунда. И вот что я увидел когда буфер у меня пустой он мне машет флажком пустой , а когда в него байтик ложу всё равно пустой, и так пока 256 штук не положу, только после этого говорит не пустой.

Поэтому господа если кто может, вышлете мне пожалуста асинхронный фифо "параметрируемый"


Всем откликнувшимся очень признателен



Блииин а границы "ранних" флагов у вас случайно не развернуто поставленны ?

Реальные флаги пустоты, заполнения (не ранние должны вставать после 3 -х тактов стороны принимающей флаг). Но если вы пользуетсь ранними флагами, то у вас могут быть похожие проблемы при некорректно стоящих границах.



Нет ранними флагами я не пользуюсь, мне бы хоть так работало, единственное чем я пользуюсь First Word Fall Through

Цитата(dsmv @ Feb 17 2006, 19:45) *
Да в общем не жалко.
На e-mail тоже выслал, на всякий случай.
Внутри архива:
ctrl_fifo512x32.edn - модуль сформирован кодогенератором, но уже не помню каким.
ctrl_fifo512x32.vhd - тоже сформирован кодогенератором
cl_fifo_control_v2.vhd - узел управления
cl_fifo512x32_v2.vhd - собственно компонент FIFO

Спасибо большое сейчас попробую.
Go to the top of the page
 
+Quote Post
Epikur
сообщение Mar 24 2006, 12:18
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 17-04-05
Из: Минск
Пользователь №: 4 215



Значит так.
У самого была похожая проблема, вот в чём было дело.
Сигнал "Буфер полон" тактируется от WriteClock, а сигнал "Буфер пуст" тактируется от ReadClock.
А потому если вы работаете в асинхронном режиме, пишите в буфер, но не читаете и даже клок чтения не подаёте, то сигнал "Буфер пуст" вообще никогда не изменится. (Здорово, правда?)
А так - достаточно одного тактового импульса чтения после сигнала сброса, чтобы "Буфер пуст" принял вменяемое значение.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 09:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016