
Сообщение от
Hunta
Это значит, что делается отдельный проект, в который добавляется модуль, скажем RK2011, делается прошивка, прошивается в плату, плата вставляется в QBus
Это немножко другое, это не отдельный модуль SoC, это вполне себе самостоятельный проект, который, кстати, может быть и не чистым SoC вообще, но принципы тактирования те же самые. Например, у меня был проект облачного шлюза - устройство подключалось по PATA-IDE к старым материнкам и прикидывалось жестким диском, а реальный сторадж находился в облаке, куда устройство по гигабитной сетке ходило. PATA вполне себе асинхронная шина, мне пришлось внутри FPGA ее синхронизировать и обрабатывать, реализовывать внутри все регистры, с другой стороны FPGA торчал PCI мастер на 66MHz. Так вот - этот весь IDE-device, включая поддержку UDMA133 получилось сделать на едином тактовом домене 66/133MHz.

Сообщение от
Hunta
Я под асинхронностью понимаю то, что операция начинается, когда прилетает SYNC (да, его можно засинхронизировать на clock, который использует модуль - прилетевший НЕ с шины)
Асинхронность будет если в тексте будет использоваться сам фронт SYNC:
Код:
always @(posedge SYNC)
Но этот фронт можно ловить и по-другому, базируясь на высокой (относительно QBus) основной тактовой:
Код:
always @(posedge wb_clk)
begin
sync0 <= SYNC;
if (SYNC & ~sync0)
begin
// handle SYNC rising edge synchronously
end
end
Вот второй вариант синхронный и будет работать без дополнительной головной боли (кстати, может быть и нет - зависит от того как SYNC внутрь if зайдет, лучше конечно еще один триггер поставить)