Цитата(Flip-fl0p @ Jun 7 2018, 10:20)
1. Я бы вообще никаких манипуляций с частотой не производил.
Конкретная задача. FPGA соединена с PC при помощи моста "USB - что_угодно" FT2232H, который способен работать в режиме асинхронного FIFO. У моста есть два буфера - TX и RX. Для передачи данных в FPGA мосту надо стробировать nRD. Для отправки на PC (и захвата данных во входной буфер) этому мосту надо стробировать nWR. Правильнее было бы описать дергание стробов в состояниях конечного автомата?
Цитата(RobFPGA @ Jun 7 2018, 11:05)
Приветсвую!
Это не Квартус лезет на рожон скорее это Вы пристаете к синтезатору с классическим вопросом "...Закурить найдется?"
А он Вам вежливо -
не курю не могу присвоить значение переменной типа
wire в процедурном блоке. Для
wire допустимо использование только
assign (так пацаны на сходке решили еще аж 1995 году). Если Вы смелы то объявите
Код
reg clk_out;
Тогда Квартус примет Вас за своего и получите
сигаретку назначение переменной в процедурном блоке
Удачи! Rob.
Добрый день!
Про то, что с доп.регистром всё заработает - это да. Только этот же регистр всё равно не синтезируется. Всё сведется к XOR-у + лог.ИЛИ (как в первом примере). И это понятно по отсутствию posedge/negedge в списке чувствительности. Чем руководствовались пацаны в 1995 году, когда так договаривались? От чего они пытались оградить программистов? Не собираются ли пацаны выпустить новый стандарт? Ибо тернарный оператор выглядит костылеобразно (не круто).
Спасибо!
Цитата(andrew_b @ Jun 7 2018, 11:22)
Это в идеале. IRL из-за всяких задержек вы получите на clk_out хороший такой дребезг. Нельзя просто так взять и смешать клок с обычным сигналом, тем более многоразрядным.
Спасибо за ценное замечание. Действительно, если клок управляется значением шины
hAA и шина переключается из состояния h0F в hF0 не синхронно а как бы по пути h0F->h0A->
hAA->hA0->hF0 может произойти неприятное.
Цитата(andrew_b @ Jun 7 2018, 11:22)
Добавлю, что если в always описывается комбинационная схема, в списке чувствительности должны присутствовать все сигналы, от которых зависит выход. У вас там не хватает clk_in, поэтому вы получите не комбинационную схему, а latch.
Точно. Ну в любом случае синтезатор не даст такой синтаксической конструкции собраться.
Цитата(iosifk @ Jun 7 2018, 11:14)
Без обид.
Без обид, разумеется.
Ув.
iosifk мне кажется есть два (как минимум) случая, когда "ориентированность на результат" приведет к негативным последствиям:
1. Конструкция языка/библиотеки/устройства претерпела изменения за последнее время (или такое изменение напрашивается в ближайшем будущем).
Пример: инициализация регистров при запуске ПЛИС "в железе". На сколько понял читая материалы в сети, в 90-е регистры инициализировались исключительно нулями. Сейчас ситуация поменялась, но ряд комментаторов по старой памяти утверждают, что это невозможно и сами не используют эту удобную опцию.
2. Хрестоматийный пример, на который нужно равняться, содержит незаметную ошибку.
Пример: в LabVIEW есть пример работы с высокоскоростными модулями HSDIO. Коротко, работа с HSDIO представляет последовательность Init->Transmit/Receive->Close. Но Close может быть двух типов - "Закрыть по завершении Transmit/Receive" и "Закрыть немедленно". Так вот в официальном примере использовано "Закрыть немедленно". HSDIO в режиме Transmit/Receive работает автономно от PC и обычно гораздо быстрее. Так что программы на основе примера работают корректно. Но если забить буфер HSDIO под завязку, и выставить частоту работы по минимуму, "хвост" передачи будет обрублен. Причем без каких-либо эксепшенов.
Таким образом, если времени нет, разумеется приходится "ориентироваться на результат". Но если оно есть, почему бы не выяснить как именно работает тот или иной подход и почему именно так.
Кроме того есть замечательное руководство
"Как правильно задавать вопросы на технических ресурсах". Надеюсь я правильно истолковываю данный кодекс, полагая что вопрос в духе "
вот моя плата на 100 микросхем, вот мой код на 10.000 строк, тут что-то не работает" хуже, чем вопрос "
Вот три строчки кода, которые не работают. Вот стремный воркэраунд на десять строчек, который работает. Можно ли написать красивее и правильнее?". И если у меня возникает вопрос первого типа, его нужно свести к вопросу второго типа и только потом обращаться за помощью.