Jump to content

    

Leka

Участник
  • Content Count

    1108
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Leka

  • Rank
    Профессионал

Recent Profile Visitors

3395 profile views
  1. Пусть дана задача: потенциометром задавать параметр 0-999, отображается на индикаторе. Задача простая, и решается как раз с переменным гистерезисом и учетом скорости изменения. Никакого дискомфорта в использовании такого метода не испытывал, нужное значение устанавливается быстро и точно.
  2. Поменять способ отображения (уже советовали).
  3. Почитал тут про Вивадо, подумал, не попробовать ли в своих задачах, и полез смотреть "absolute maximum ratings" на 7 семейство. Выяснилось, что 3 питания обязательны. Поостыл, 3 питания слишком жирно для "проектов выходного дня" (Циклону-4 достаточно 2 питания, и нормально работает от 2 пальчиковых батареек, без стабилизаторов).
  4. skew? Или что-то другое? ~0.5м витой пары, выдернутой из стандартного кабеля (4 пары).
  5. Почему только в России? Во всем мире ПЛИС незаслуженно притесняют. С чисто технической точки зрения (и только с этой !), рынок ПЛИС включает в себя почти весь рынок МК. Сейчас отлаживаю USB-CDC на stm32, и под рукой 2 мелкие самодельные платки с дешевыми ПЛИС-ками и минимальным обвесом. К одной (~3см*4см) подпаяны 4 проводочка, 2 идут в спаренный USB-разъем, 2 в Ethernet-порт компа. Работает аппаратным USB-сниффером, смотрю обмен stm32 с компом. Другая (~2см*6см) работает USB-осциллографом в щупе (входная емкость ~2пф, смотрю фронты, согласование, сигналы до ~500МГц). В устройстве с stm32 посмотрел качество выдаваемого строба. С stm32 у меня гораздо больше проблем, чем с ПЛИС-ками.
  6. Еще пример смешивания блокирующих/неблокирующих присваиваний - оператор "for" в "always@(posedge clk)" : always@(posedge clk) begin ... for(int i=0; i<N; i++) a[i]<=...; ... - блокирующее присваивание переменной "i", неблокирующее - a.
  7. Кстати, м/б важно при выборе производителя FPGA, это внутренняя память - м/б критично для некоторых задач. У Xilinx во всех семействах есть disrtributed RAM, у Альтеры нет (но на замену в дорогих семействах есть мелкая память с асинхронным чтением). У Lattice в мелких семействах может отсутствовать true dual port RAM.
  8. Я в свое время перешел с ISE на Quartus из-за существенной разницы в скорости синтеза некоторых сложных проектов. Несколько минут в Квартусе, против нескольких часов (!!!) в ISE. Vivado сравнялась с Квартусом в скорости синтеза?
  9. Для разных сигналов, конечно. Смешивать присваивания для одной переменной нельзя по стандарту (синтезатор выдаст ошибку). Имел в виду - "железный" модуль в ПЛИС (для замены внешнего модуля на CH340G), а не симуляцию на компе.
  10. И не сводится ли это в конечном итоге к покупке готовых ядер?
  11. USB-CDC модуль в каком-либо варианте получится с этими инструментами? На эмуляцию CH340G у меня ушло ~300 строк на Верилоге (кристалл - самый мелкий Циклон-4е).
  12. Последний проект, который делал - реализация в Циклоне-4е USB-CDC вместе с FS PHY. Чтобы не писать свой драйвер, снял логи, и сделал логическую эмуляцию CH340G. Заработал лучше "оригинала", скорость выросла до 6МБит/сек (ограничение драйвера для Windows).
  13. В общем, если Верилог и Альтера, то для быстрого старта советую начинать с Icarus Verilog + Viewer в Квартусе. Включить поддержку SystemVerilog, но писать на Верилоге, используя из SV только упакованные массивы. Массивы объявлять только упакованными. Разобраться с принципом синхронного дизайна, с блокирующими и неблокирующими присваиваниями (и посылать копать огород тех, кто советует не смешивать в одном always-блоке блокирующие и неблокирующие присваивания).
  14. У меня Квартус, использую старую версию 13.1, код пишу в Notepad++, синтез и прошивка через bat-файлы (запуск программ в режиме командной строки). Графическую оболочку Квартуса запускаю очень редко (если надо глобальные настройки поменять, или посмотреть расклад ЛЕ по модулям). ModelSim не использую. Когда осваивал Верилог, моделировал в Icarus Verilog c текстовым выводом. На этапе освоения очень полезно смотреть, в какую схему синтезируется та или иная конструкция (viewer Квартуса также можно запустить из командной строки). Правильность алгоритмов обычно проверяю на Си, потом перевожу в Верилог.
  15. Конечно ближе. Понадобился crc16 для USB в ПЛИС, взял с Вики исходник на Си, заменил { } на begin end, готово: `default_nettype none module crc16(clk, clr, en, a, q); input clk, clr, en; input [7:0] a; output reg [15:0] q; `define P 16'hA001; always@(posedge clk)begin if(clr) q=0; if(en) begin q=~q^a; for(int i=0; i<8; i++) if(q&1)begin q>>=1; q^=`P; end else q>>=1; q=~q; end end endmodule