spectr 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба Собственно, сабж. Среда разработки - Q II 7.2. Периодически сталкиваемся с такой проблемой - LPM_FIFO вычитывает данные в обратном порядке (т.е., работает как стек,а не как фифо). Причем штука эта происходит совершенно случайно - ничего в фифо не меняем, а оно само ведет себя как хочет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димыч 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба это только в Q 7.2 у Вас? могу предположить, что неициализированы указатели голова-хвост. Reset в системе присутствует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба Опишу проблему подробнее. Проект выполнен в виде схем (соответственно, с использованием мегафункций и мегавизарда). Есть интерфейс между двумя плисами (одинаковыми). С другого плиса данные приходят в это самое фифо. Пишутся данные внешним клоком (с того плиса), а читаются - внутренним клоком этого плиса. Частота чтения = 150 МГц. Также используется асинхронный ресет. С выхода фифо данные идут в обработку. Проблема в том, что иногда (подчеркиваю - иногда) фифо как будто переворачивает шину, меняя местами младший и старший биты. Для обработки это губительно. Причем, глюк этот возникает не только в железке, но и в симуляторе тоже (встроенный квартусовский симулятор). Никаких настроек, связанных с порядком следования битов мы найти не смогли. Сам глюк возникает спонтанно. Фифо не трогаем НИКОГДА. Трогаем только дальнейшую обработку. Иногда просто достаточно перекомпилировать проект - и все в порядке, а иногда приходится и в схеме перерисовывать (переворачивать) шину.... Чушь какая-то..... П.С.: Q II 7.2 SP3, также накручены сверху: DSP Builder, Megacore IP library, Nios II. Мы пользуемся только стандартными мегафункциями. И, напоследок, на всякий случай, привожу текст TDF-ника, созданного мегавизардом: -- megafunction wizard: %LPM_FIFO+% -- GENERATION: STANDARD -- VERSION: WM1.0 -- MODULE: dcfifo -- ============================================================ -- File Name: fd_fifo0.tdf -- Megafunction Name(s): -- dcfifo -- -- Simulation Library Files(s): -- altera_mf -- ============================================================ -- ************************************************************ -- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! -- -- 7.2 Build 207 03/18/2008 SP 3 SJ Full Version -- ************************************************************ --Copyright (C) 1991-2007 Altera Corporation --Your use of Altera Corporation's design tools, logic functions --and other software and tools, and its AMPP partner logic --functions, and any output files from any of the foregoing --(including device programming or simulation files), and any --associated documentation or information are expressly subject --to the terms and conditions of the Altera Program License --Subscription Agreement, Altera MegaCore Function License --Agreement, or other applicable license agreement, including, --without limitation, that your use is for the sole purpose of --programming logic devices manufactured by Altera and sold by --Altera or its authorized distributors. Please refer to the --applicable agreement for further details. INCLUDE "dcfifo.inc"; SUBDESIGN fd_fifo0 ( aclr : INPUT = GND; data[47..0] : INPUT; rdclk : INPUT; rdreq : INPUT; wrclk : INPUT; wrreq : INPUT; q[47..0] : OUTPUT; ) VARIABLE dcfifo_component : dcfifo WITH ( INTENDED_DEVICE_FAMILY = "Stratix II", LPM_HINT = "MAXIMIZE_SPEED=5,RAM_BLOCK_TYPE=M4K", LPM_NUMWORDS = 8, LPM_SHOWAHEAD = "OFF", LPM_TYPE = "dcfifo", LPM_WIDTH = 48, LPM_WIDTHU = 3, OVERFLOW_CHECKING = "ON", RDSYNC_DELAYPIPE = 4, UNDERFLOW_CHECKING = "ON", USE_EAB = "ON", WRITE_ACLR_SYNCH = "OFF", WRSYNC_DELAYPIPE = 4 ); BEGIN q[47..0] = dcfifo_component.q[47..0]; dcfifo_component.wrclk = wrclk; dcfifo_component.rdreq = rdreq; dcfifo_component.aclr = aclr; dcfifo_component.rdclk = rdclk; dcfifo_component.wrreq = wrreq; dcfifo_component.data[47..0] = data[47..0]; END; -- ============================================================ -- CNX file retrieval info -- ============================================================ -- Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0" -- Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1" -- Retrieval info: PRIVATE: AlmostFull NUMERIC "0" -- Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1" -- Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "0" -- Retrieval info: PRIVATE: Clock NUMERIC "4" -- Retrieval info: PRIVATE: Depth NUMERIC "8" -- Retrieval info: PRIVATE: Empty NUMERIC "1" -- Retrieval info: PRIVATE: Full NUMERIC "1" -- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Stratix II" -- Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0" -- Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1" -- Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0" -- Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0" -- Retrieval info: PRIVATE: Optimize NUMERIC "2" -- Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "2" -- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" -- Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0" -- Retrieval info: PRIVATE: UsedW NUMERIC "1" -- Retrieval info: PRIVATE: Width NUMERIC "48" -- Retrieval info: PRIVATE: dc_aclr NUMERIC "1" -- Retrieval info: PRIVATE: diff_widths NUMERIC "0" -- Retrieval info: PRIVATE: msb_usedw NUMERIC "0" -- Retrieval info: PRIVATE: output_width NUMERIC "48" -- Retrieval info: PRIVATE: rsEmpty NUMERIC "0" -- Retrieval info: PRIVATE: rsFull NUMERIC "0" -- Retrieval info: PRIVATE: rsUsedW NUMERIC "0" -- Retrieval info: PRIVATE: sc_aclr NUMERIC "0" -- Retrieval info: PRIVATE: sc_sclr NUMERIC "0" -- Retrieval info: PRIVATE: wsEmpty NUMERIC "0" -- Retrieval info: PRIVATE: wsFull NUMERIC "0" -- Retrieval info: PRIVATE: wsUsedW NUMERIC "0" -- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Stratix II" -- Retrieval info: CONSTANT: LPM_HINT STRING "MAXIMIZE_SPEED=5,RAM_BLOCK_TYPE=M4K" -- Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "8" -- Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF" -- Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo" -- Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "48" -- Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "3" -- Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON" -- Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "4" -- Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON" -- Retrieval info: CONSTANT: USE_EAB STRING "ON" -- Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF" -- Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "4" -- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND aclr -- Retrieval info: USED_PORT: data 0 0 48 0 INPUT NODEFVAL data[47..0] -- Retrieval info: USED_PORT: q 0 0 48 0 OUTPUT NODEFVAL q[47..0] -- Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL rdclk -- Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL rdreq -- Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL wrclk -- Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL wrreq -- Retrieval info: CONNECT: @data 0 0 48 0 data 0 0 48 0 -- Retrieval info: CONNECT: q 0 0 48 0 @q 0 0 48 0 -- Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0 -- Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0 -- Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0 -- Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0 -- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0 -- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0.tdf TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0.inc TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0.cmp FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0.bsf TRUE FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0_inst.tdf FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0_waveforms.html TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL fd_fifo0_wave*.jpg FALSE -- Retrieval info: LIB_FILE: altera_mf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба Собственно, сабж. Среда разработки - Q II 7.2. Периодически сталкиваемся с такой проблемой - LPM_FIFO вычитывает данные в обратном порядке (т.е., работает как стек,а не как фифо). Причем штука эта происходит совершенно случайно - ничего в фифо не меняем, а оно само ведет себя как хочет. Странно все это. С фифо все работают. Можно предложить: Почитать на сайте errata sheets на мегафункцию. Может что с типом памяти связано. Сгенерите на другие типы памяти, посмотрите результат. Можно сделать одноклоковое фифо как по записи, так и по чтению. Точно работать будет. (перевести входной клоковый домен на 150 мГц) Скачать Q8II 8.1 Может проект по частоте не проходит или по временам удержания, установки. (Раз такая ситуация ВСЕГДА в моделировании определяется). Посмотрите, что в таком случае показывает функциональное моделирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димыч 0 17 сентября, 2008 Опубликовано 17 сентября, 2008 · Жалоба Можно сделать одноклоковое фифо как по записи, так и по чтению. Точно работать будет. Да. С двухклоковым FIFO на первом Циклоне делал проект - были потери данных. Много боролся, в итоге перешёл да одноклочное FIFO, о проблемах сразу забыли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skilful 0 20 сентября, 2008 Опубликовано 20 сентября, 2008 · Жалоба может скрин из модельера дадите - точнее часть его, которая связана с фифо и непосредственному "перевороту" шины (только выведите все сигналы фифошки) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться