Поиск
Показаны результаты для тегов 'cdc'.
-
Модуль SPI на Verilog
Kirill.L опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Добрый день! Я в рамках учебы занялся разработкой модуля SPI на Verilog-2001 и столкнулся с проблемой, что не понимаю как правильно организовать прием/передачу данных в режиме ведомого/ведущего. По идеи вся логика, ответственная за процесс обмена данными, будет находится в другом тактовом домене (SCK) и по правилам надо все что входит в модуль приема/передачи синхронизировать с SCK, но мы не знаем в каком виде к нам будет приходить SCK (он будет непрерывный или с перерывами в передаче, через сколько тактов после перехода SS в состояние низкого активного уровня он придет). Сейчас в моей реализации все управляющие сигналы от регистров и данные из FIFO, которые находятся в домене системной частоты, попадают в модуль приема/передачи без каких либо манипуляций и сдвиговый регистр передает/принимает данные на тактовой частоте SCK, а синхронизирую я только сигналы готовности данных (нужно взять из буфера передатчика или записать их в буфер приемника). Есть какое то лаконичное решение для задачи пересечением этих тактовых доменов? Или в целом, если есть уверенность что мы не будем менять состояния регистров в процессе передачи и уж тем более данные у нас лежат достаточно долго, то можно и обойтись синхронизацией по системной частоте управляющих сигналов буферов? -
Здравствуйте! Имеется мультиклоковый проект с передачей данных из одного домена в другой. Необходимо сформировать файл ограничений. Для синхронизации сигналов, передаваемых между доменами, применяется стандартный 2FF синхронизатор. module sync #( parameter int unsigned STAGES = 2 ) ( input clk_i, input rst_ni, input serial_i, output serial_o ); logic [STAGES-1:0] reg_q; always_ff @(posedge clk_i, negedge rst_ni) begin if (!rst_ni) begin reg_q <= 'h0; end else begin reg_q <= {reg_q[STAGES-2:0], serial_i}; end end assign serial_o = reg_q[STAGES-1]; endmodule В качестве ограничений изначально я хотел использовать команду вида: set_false_path -to [ get_pins { */sync_inst/reg_q[0]/D} ] Однако во время изучения вопроса я обнаружил, что некоторые источники указывают, что нужно применять конструкцию вида: # Период принимающего домена set BCLK 10 set_max_delay $BCLK -to [ get_pins { */sync_inst/reg_q[0]/D} ] Сейчас у меня сформировалось следующее мнение: Если я передаю отдельный сигнал, не связанный с другими, то мне следует использовать set_false_path. Если же я передаю, например, пару сигналов (DATA, WE), то нужно использовать set_max_delay, чтобы сигналы достигли приемника в пределах одного такта (Мне почему-то кажется, что я не верно это понимаю). Прошу подтвердить или опровергнуть корректность моих суждений.
-
Привет! Помогите навести порядок в голове, не могу разобраться с mbed и понять куда двигаться дальше. В идеале мне нужен RTOS с библиотеками, чтобы вещи типа CDC USB Com port и простая работа с TFT дисплеем делалась легко в десяток строк. Посмотрел ролики про MBED - сказка! CDC делается в пару строк, под TFT ILI9341 есть библиотека, плату и TFT заказал на Ali. Когда же плата приехала, оказалось что в mbed 6 с примером из доки она не работает, вроде как для нее (и для ее аналога NUCLEO 103) нет поддержки USB стека. Если зашить пример по ссылке снизу - получаю USB UNKNOWN device. При этом на сайте mbed есть проект с перепиленными библиотеками, https://os.mbed.com/users/hudakz/code/STM32F103C8T6_USBSerial/ но ПОД СТАРЫЙ mbed2 и в 6 версии он не компилится. Т.е. в принципе все должно работать, просто в 6 mbed работа с USB портом ограниченна искусственно. Библиотека под TFT тоже написана под mbed2, страшно подумать что будет при компиляции под 6. Посоветуйте - есть ли вариант получить с mbed то что мне надо, может заказать другую плату? Нужно CDC, TFT, несколько каналов ADC и DAC - в виде PWM или сам по себе. Или идти другим путем? -- Вот пример с CDC под 6 версию. https://os.mbed.com/docs/mbed-os/v6.6/apis/usbserial.html
- 12 ответов
-
- mbed
- stm32f103c8t6
-
(и ещё 2 )
C тегом:
-
Ищется специалист по USB СDС.
Gorby опубликовал тема в Предлагаю работу
Ищется специалист по USB СDС. Есть процессор STM32L476QGI6, в нем реализован пример от SТМ USB виртуальный компорт. Всё работает хорошо. USB Full Speed. IAR ARM 8.22. Требуется так изменить\доработать код, чтобы появилось ДВА таких виртуальных компорта. Видится применение композитного устройства. Тут мои знания о USB заканчиваются.