Перейти к содержанию
    

xvr

Свой
  • Постов

    3 583
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент xvr


  1. Ошибка (и не единственная :05: ) в том, что все присваивания любому регистру нужно делать в пределах одного always блока (единственное исключение - шины с 3мя состояниями, но в такие подробности лучше не вдаваться :) ) Второе но - у вас асинхронная реализация, при имплементации этого в FPGA вы сможете подробно и со всех сторон изучить все грабли, которые разложены на пути приверженцев асинхронного подхода Рекомендую сделать синхронный дезайн. Что касается остального, то прежде чем писать Верилоговский модуль необходимо определится с интерфейсом: 1) Как будет осуществлятся загрузка данных и их сдвиг (один сигнал или несколько?) 2) Что должно быть на выходе Manch когда сдвиг запрещен? 3) Нужна ли синхронизация фазы выходного манчестера?
  2. Покопал в своих закромах, нашел программу выключающую комп через APM
  3. Ключевое слово - ACPI Более простое (но сильно устаревшее) - APM
  4. АЦП в PIC 16F876A

    Угу, совсем пониженного :) Ядро останавливается Нет Да Прерыванием от АЦП по окончанию преобразования
  5. АЦП в PIC 16F876A

    Добавлю свои 5 коп. автору темы: ОЧЕНЬ рекомендуется (а при вашем диапазоне входных напряжений и вообще обязательно :) ) переводить процессор в режим SLEEP во время измерения напряжения - ядро процесора довольно заметно шумит, его остановка позволяет от этого шума избавится.
  6. Это и есть слегка другие чипы. Угу, обычно, когда говорят об UART на ум первым приходит RS232, про RS485/422 обычно упоминают явно :) Да, но может потребоваться выбрать конкретный тип и speed grade (не все могут подойти). Кстати, глупый вопрос, а там, куда вы этот RS485 подключать собрались, 12 MBaud смогут принять?
  7. О! Это совсем другое дело. На такие скорости CPLD вполне пойдет и никакие LVDS тоже не нужны. Однако с MAX'ом все равно будут проблемы - стандартные max232 расчитанны на частоты в 100 раз меньше, а на требуемые 12 MBaud будут слегка другие чипы :)
  8. Ой, я наверное отстал от жизни, но MAX у вас - это такой 400MBaud UART? :07: И давно такие делают?
  9. Попробовал, увы return Verilog не понимает :( Простой цикл (без дополнительной проверки на сработавший hit) понимает, получилась очень широкая структура (по отдельному логическому блоку на каждый бит выхода), как ни странно она заняла почти в 2 раза меньше ресурсов и стала слегка быстрее, на чем я пожалуй и остановлюсь :beer: always @(inputs) begin hit_index_int = 0; for(cnt=0;cnt<INP_WIDTH;cnt=cnt+1) if (inputs[cnt]) hit_index_int = cnt; hit_index = hit_index_int; hit = (inputs!=0); end Приоритеты правда изменились на противоположные, но для моего случая это не существенно.
  10. Попробовал, почти получилось: module p_enc #(parameter INP_WIDTH=8, parameter OUT_WIDTH=3) ( input [INP_WIDTH-1 :0] inputs, // Inputs (index 0 has high priority) output reg [OUT_WIDTH-1:0] hit_index, // Index of input hit output reg hit // 1 if any input hit ); reg [OUT_WIDTH-1:0] cnt; reg [OUT_WIDTH-1:0] hit_index_int; reg hit_int; always @(inputs) begin hit_index_int = 0; hit_int = 0; for(cnt=0;cnt<INP_WIDTH;cnt=cnt+1) begin if (!hit_int && inputs[cnt]) begin hit_int = 1'b1; hit_index_int = cnt; end end hit_index = hit_index_int; hit = hit_int; end endmodule XST сделал длинную 'кишку' из логики, но как 'priority encoder' он это не опознал :( Т.е. его специальные методы для синтеза энкодеров работать не будут (а есть ли они вообще?) PS. 2 des00: спасибо за round-robin арбитр, пригодится :) Кстати, чем синтезировали?
  11. Это понятно, непонятно что делать если ни один сигнал не совпал - default к циклу не присобачишь :unsure:
  12. Господа, кто может подсказать, как создать параметризированный Priority Encoder в Vierilog (2001)? Необходимо что то вроде module PriEncoder #(parameter INP_WIDTH=32, parameter OUT_WIDTH = 5) ( input [INP_WIDTH-1:0] input_lines, output [OUT_WIDTH-1:0] hit_line_index, output hit_line); Думаю, что надо копать в сторону for/while циклов, но не очень понятно, как их отработают синтезаторы :( Нужно для XST / ISE 8.2
  13. Смотрим исходные требования: Сравниваем: Denwer - Весит меньше 5 метров. GoAhead WebServer 2.1 - 60K memory footprint Как говорится - почуствуйте разницу B)
  14. Некоторое время назад я наткнулся на занимательный баг в postfit симуляторе для CPLD (проявилось на XC9572XL, возможно и на других проявится тоже). Сделал проект (на Verilog'е), сделал test bench, запустил, все работает. Оттранслировал проект вплоть до bitstream, решил проверить в симуляторе результат - ничего не работает, сплошные X, иногда проскакивают похожие данные :05: Стал разбираться. Через пару часов разбора полетов выяснил, что не работает глобальная предустановка (PRLD), что выглядело странно - вроде как никто ее не отменял. Дальнейшие танцы с бубном вокруг этого сигнала ни к чему не привели - грешил на реализацию ее в модуле glbl (хотя вроде в симуляции ДО fitter'а он работал), пробовал ее перенести к себе - никакой реакции :( Пробовал вручную установить сигнал - аналогично. Изучение Verilog файла после fitter'а показало, что этот сигнал там есть и используется, как положено. Я убил ДВА ДНЯ, что бы понять различие между СМОТРЕТЬ и ВИДЕТЬ - wire \glbl.PRLD; X_OR2 \serial_mux_inst/mode_reg<1>_tsimcreated_prld_ ( .I0(\serial_mux_inst/mode_reg<1>.SETF_70 ), .I1(\glbl.PRLD ), .O(\serial_mux_inst/mode_reg<1>_tsimcreated_prld__71 ) ); \glbl.PRLD - это не сигнал PRLD в модуле glbl, а локальный сигнал glbl.PRLD в текущем модуле :01: Добавление строки assign uut. \glbl.PRLD = glbl.PRLD; в тестбенч помогло - все сразу заработало. У меня вопрос - неужели никто не использует postfit моделирование для CPLD в ISE? Или никто не использует состояние тригеров в CPLD по сбросу? И почему эту багу до сих пор не исправили :cranky: Найдено было в ISE 8.2.03i (WEB Pack), перепроверено на ISE 9.2.02i (WEB Pack) - все по прежнему
  15. Эффективно и переносимо будет сделать в виде COM объектов (dll соотвественно будет COM сервером)
  16. Если SE то для него нужно компилировать библиотеки, см доку Synthesis and Simulation Design Guide, раздел Compiling Xilinx Simulation Libraries (COMPXLIB)
  17. Обновить библиотеки не пробовал? (С сайта Xilinx) Лицензия на MXE (даже на free) берется на сайте Xilinx'а (где то в районе загрузки собственно MXE) Нет, не прав. Во первых они есть в самом WebPack'е, во вторых они есть в MXE, в третьих - на сайте Xilinx'а есть обновление библиотек для MXE - это они самые и есть (библиотеки в чистом виде)
  18. Если важен результат а не процесс - возьмите готовые: Extron VTR001 & VTT001 (или любой другой их продукт из серии Twisted pair/RGB Transmitters and Receivers
  19. Хотелось максимально использовать возможности по скоростям, хотя это в данном случае и не критично В том и проблема, что эти характеристики противоречивые - в одном месте datasheet'а написано 10 MHz, в другом - менее 5 MHz Увы, XC9576XL -10 не тянет даже 10 :( Да и не надо. 5 не получится - следующая частота 2.5 MHz (Tcy/16) PIC запущен на 40 MHz (10mips), в процессе програмирования DataFlash он будет закачивать массив из CPLD и выгружать его обратно на максимальной скорости. Никакой дополнительной обработки передаваемых данных не нужно, так что PIC может успеть все передать и на 10 MHz SPI. С другой стороны запись переданного массива в DF потребует соизмеримого времени, так что скорость собственно передачи не очень критична, ну и черт с ней.
  20. 'Поиграться и отсимулировать' можно, но если я не знаю какие задержки реально допускает PIC, то с чем я буду играться? Да и 10 MHz это тоже не очень мало - в текущем варианте разводки CPLD есть задержки около 80ns, что явно больше, чем можно :( Собственно CPLD соединяет 3 устройства - PIC/DataFlash/JTAG (Xilinx FPGA). Скорость нужна на связке DF->JTAG для ускорения процесса загрузки FPGA. Загружаться будет под управлением внешней тактовой частоты (25 MHz) непосредственно из DF в FPGA JTAG, минуя PIC. Так что скорость работы самого PIC'а не критична, но так как другая часть коммутатора явно будет работать более чем в 2 раза быстрее, то хотелось бы и PIC запустить на максимальной скорости, осталось только выяснить, какая она, максимальная.
  21. Я как бы догадываюсь, что работать будет (хотя по datasheet'у и не должно), меня очень интересует какие на этой частоте есть запасы по времянкам - у меня этот SPI проходит через комутатор на CPLD (XC9572XL) и мне надо определится, смогу ли я заставить это все работать на 10 MHz, или придется понижать тактовую.
  22. Порт открывается в overlapped режиме В порт записывают в overlapped режиме - Что означает ошибку записи, я даже знаю какую - ERROR_IO_PENDING, что означает что операция записи все еще выполняется, как вы и хотели (иначе зачем нужно было открывать порт в overlapped режиме). См. MSDN, функции GetOverlappedResult и WaitForSingleObject
  23. Максимальная скорость SPI

    Читаю даташиты от PIC18F45J10 и не могу понять - то ли у меня проблемы с арифметикой, то ли в них написан какой то бред :( В DS39682C написано (параграф 15.3.5, страница 150), что максимальная частота обмена по SPI (в мастер моде) Fosc/4, т.е. 10 MHz (что явно написано в качестве примера прямо в тексте - 10 Mbps) Т.е. длительность одного бита - 100ns. Далее, смотрю на диаграммы и времена SPI (figure 23-11 & table 23-15 на странице 318) Смотрю времена установки и удержания входных данных по отношению к клоку (SDIx/SCKx) - не менее 100ns+100ns, итого 200ns, что в 2 раза превышает длительность одного бита (т.е. скорость обмена не должна быть меньше 5 MHz) Кому верить?
×
×
  • Создать...