Jump to content

    

6oraTblpb

Участник
  • Content Count

    13
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. Насчет почитать даташиты - очень полезный совет. Ну а по теме: с такими частотами работать со спартан нельзя, переходите на виртекс. Или на свой страх и риск оставайтесь на спартане, но я уверен, что вы обязательно(!) столкнетесь с проблемами, в том числе и с теми, которые сами озвучили.
  2. Была проблема, похожая на вашу, тоже не мог получить требуемую амплитуду, а для меня это было критично. После пары дней танцев с бубном вокруг матлаба и фиркомпилера домножил коэффициенты, которые выдает матлаб на необходимый коеффициент в экселе, засунул в фиркомпилер, с тех пор всё работает ) Тут главное вычислить коэффициент правильно, и следить, чтобы переполнения не получилось (т. е. за разрядностью коэффициентов). Может это и ненормально, но требуемый эффект был получен ))
  3. Он же у вас вроде ругается на запуск JTAG chain configuration. Может стоит внимательно посмотреть настройки в SDK->XilinxTools->Configure JTAG settings.
  4. Да, добавили защиту от дурака )) Но при необходимости можно это отключить, прописав в Other Bitgen Command Line Options строчку -g UnconstrainedPins:Allow, тогда битстрим будет создаваться
  5. Подскажите, с помощью чего вы кейген переделываете?
  6. Ребята, а можно поподробнее, куда какие строчки вставлять, чтобы Vivado попробовать? Или поделитесь кто нибудь готовой таблеткой, а то что то с ходу не получилось у меня ничего (
  7. Проблема связана с асинхронной подачей сигнала sel. Сейчас насколько я понимаю, вы его формируете сами в tb файле. Поставьте триггеры на этот сигнал, хотя бы для симуляции, потому что в законченной схеме скорее всего этот сигнал у вас будет синхронным, если он конечно не приходит снаружи кристалла или из другого клок домена. И всё у вас заработает )
  8. Производными конечно являются ) Но если их подключить на тактовые входы, то схема перестает быть синхронной (кошерной?). Для синхронности надо их на clk_en включать.
  9. Здравствуйте, подскажите пожалуйста название книги, из которой взята вот эта выдержка: electronix.ru/forum/index.php?act=Attach&type=post&id=20009
  10. Здравствуйте, уважаемые. Возникла задача организовать простой PCI target на Xilinx. Почитал стандарт, вроде всё понятно, но работы много если с нуля начинать ) Насколько я понимаю, эта тема уже не нова, может кто поделится примерами или советом, где найти примеры )
  11. ff убрал, правда это ничего не поменяло в моем случае. Но вы правы, некорректно. Откуда то с примеров на форуме скопипастил. ) Инициализация DMA_START_ADDR производится при запуске пдп в основной части программы, т.к. могут различные массивы передаваться. Не все исходники выложил, вы уж извините )) Подумал, что слишком много кода получится. Сделал как у вас, всё заработало. То есть просто добавил разрешение прерываний по уарт при запуске и отключение в обработчике (а было разрешение при инициализации и никаких запрещений). Да, и ещё добавил *pDMA9_CONFIG &= ~0x0001; в обработчик. Почему то думал, что после завершения блока передачи этот бит сам сбрасывается ( запуск: *pDMA9_START_ADDR = &buf_uart0; *pDMA9_CONFIG |= 0x0001; *pUART0_IER |= 0x0002; обработчик: *pUART0_IER &= ~0x0002; *pDMA9_CONFIG &= ~0x0001; *pDMA9_IRQ_STATUS = 0x0001; Насчет того, что у вас символы пропадают, ничего сказать не могу, у меня всё корректно. Может и правда на железе у вас всё будет нормально. Спасибо!
  12. Спасибо за советы ) Прерывания я сбрасывал. Раньше работал без ДМА, тогда считывал IIR регистр, прерывание сбрасывалось. Всё работало. Теперь по ДМА в обработчике пишу *pDMA9_IRQ_STATUS = 0x0001 ;//(сигнал W1C, запись 1 для сброса). Пробовал и IIR читать. Прерывание сбрасывается, но тут же снова устанавливается (смотрел в регистрах). Просто у меня проблема вроде не в этом. По идее, прерывание должно при моей инициализации возникнуть после ДМА (когда обнулиться счетчик и опустошится буфер), НО оно возникает сразу же после включения прерываний, после исполнения этой строчки: *pSIC_IMASK = 0x00001000; Я ещё даже не успеваю запустить ДМА, и в итоге так и не запускаю, потому что программа начинает сразу же крутиться в обработчике. Вот я и подумал, что или забыл что-то при инициализации или хитрость какая :(
  13. Здравствуйте! У меня возникла следующая проблема при программировании BF534: Необходимо сделать передачу массива по UART через DMA. По окончанию передачи надо запускать прерывание. Как только инициализирую прерывания, процессор уходит в обработчик этого прерывания, и там и крутится :) Подскажите, что мог сделать неправильно. Заранее спасибо за помощь. Кусок кода: void initUART() { *pDMA9_X_COUNT = 512 ; *pDMA9_X_MODIFY = 4 ; *pDMA9_CONFIG = 0x0080 ; //============================= *pPORTF_FER = 0x3; *pUART0_GCTL = 0x0001; *pUART0_LCR = 0x0083 ; *pUART0_MCR = 0x0000 ; *pUART0_DLH = 0x0000 ; *pUART0_DLL = 0x002B ; *pUART0_LCR = 0x0003 ; *pUART0_IER = ERBFI | ETBEI; } //----------------------------------------------------------- void initIRQ(void) { *pSIC_IAR0 = 0xffffffff ; *pSIC_IAR1 = 0xfff33fff ; *pSIC_IAR2 = 0xffffffff ; *pSIC_IAR3 = 0xffffffff ; register_handler(ik_ivg10, UART0RxTx_ISR); // UART RX -> IVG 10 *pSIC_IMASK = 0x00001000; } //----------------------------------------------------------- Если прерывания не включать (маскировать), ПДП прекрасно срабатывает..