|
Чтение данных из CPU в FPGA, vhdl |
|
|
|
 |
Ответов
|
Nov 23 2009, 09:46
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Смотря какие тайминги, и смотря как скорость ПЛИС. Для высоких скоростей работы я бы посоветовал делать полностью синхронный дизайн: работать по CKOUT, на все сигналы двойную синхронизацию, а только потом уже защелки. Код module simple_reg (CKOUT, d, nce, noe, nwe); inout [7:0] d; input nce, nwe, noe,CKOUT;
reg [7:0] din_1d,din_2d, din, dout; reg nce_1d, nwe_1d, noe_1d, nce_2d, nwe_2d, noe_2d;
// sync always @(posedge CLKOUT) begin nce_1d <= nce; nce_2d <= nce_1d; nwe_1d <= nwe; nwe_2d <= nwe_1d; noe_1d <= noe; noe_2d <= noe_1d; din_1d[7:0] <= d[7:0]; din_2d[7:0] <= din_1d[7:0]; end
//latches always @(posedge CLKOUT) begin if(nwe_2d & ~nwe_1d) din[7:0] <= din_2d[7:0]; if(.....) dout[7:0] <= ... end
assign d = (nce | noe) ? 8'hzz : dout;
endmodule Так получатся наилучшие сетапы, холды и общая fmax. Но будет больше потреблять, займет больше места внутри плис и т.д. В общем, свои + и -
|
|
|
|
|
Nov 23 2009, 12:40
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(des00 @ Nov 23 2009, 13:43)  при работе на CLKOUT в режиме source-synchronus синхронизаторы вообще не нужны, а при работе на другом асинхронном клоке на все сигналы ставить синхронизаторы, это простите меня бред. К тому же чреватый потенциальными проблемами, данные и адрес хлопать на триггерах не имеет смысла, т.к. это мультицикловые пути и условие по setup/hold легко выполняется протоколом шины. Это не бред, а помехоустойчивость. Если CKOUT - синхронный клок, то можно защелки и сразу ставить, бесспорно. Но если асинхронный, то двойная классическая схема синхронизация обязательна, иначе будете ловить все помехи на шине. В частности, в мостовых схемах асинхронных магистральных интерфейсов без этого никуда - внешний тактовый сигнал и сплошные схемы синхронизации. Опять же оговорюсь, этот кусок кода предназначен для помехоустойчивости, стабильности и хорошей времянки. Минусы емкость, ну и т.д. - писал выше.
Сообщение отредактировал Shivers - Nov 23 2009, 12:41
|
|
|
|
|
Nov 23 2009, 14:27
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Shivers @ Nov 23 2009, 06:40)  Это не бред, а помехоустойчивость. Если CKOUT - синхронный клок, то можно защелки и сразу ставить, бесспорно. Но если асинхронный, то двойная классическая схема синхронизация обязательна, иначе будете ловить все помехи на шине. В частности, в мостовых схемах асинхронных магистральных интерфейсов без этого никуда - внешний тактовый сигнал и сплошные схемы синхронизации. Опять же оговорюсь, этот кусок кода предназначен для помехоустойчивости, стабильности и хорошей времянки. Минусы емкость, ну и т.д. - писал выше. Вы одно с другим путаете. Может быть в асинхронных магистральных интерфейсах вы и правы. Но тут стоит проц, на его шине висит фпга, Шина параллельная, синхронная, работающая в асинхронном режиме (расстояние между процом и фпга не выше ~10см). CLKOUT определяет на шине все. Если посмотрите внимательно на картинку то видно что проц выдерживает и setup/hold самостоятельно. Еще раз при работе от CLKOUT (source-synchronus) синхронизаторы ставить вообще смысла нет, адрес/данные это мултицикл, нужно только вырезать фазу сигнала записи/чтения. А при работе на клоке фпга в асинхронном режиме, ставить синхронизаторы как это делаете вы тоже смысла не имеет, т.к. проц опять же выдерживает setup/hold. Смысла в синхронизаторах на адресе/данных нет. А насчет времянки повторю еще раз это мультицикловые пути, правильно пропишите констрейны и проблем не будет.
--------------------
|
|
|
|
|
Nov 23 2009, 14:49
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(des00 @ Nov 23 2009, 17:27)  Вы одно с другим путаете. Может быть в асинхронных магистральных интерфейсах вы и правы. Но тут стоит проц, на его шине висит фпга, Шина параллельная, синхронная, работающая в асинхронном режиме (расстояние между процом и фпга не выше ~10см). CLKOUT определяет на шине все. Если посмотрите внимательно на картинку то видно что проц выдерживает и setup/hold самостоятельно. Еще раз при работе от CLKOUT (source-synchronus) синхронизаторы ставить вообще смысла нет, адрес/данные это мултицикл, нужно только вырезать фазу сигнала записи/чтения. А при работе на клоке фпга в асинхронном режиме, ставить синхронизаторы как это делаете вы тоже смысла не имеет, т.к. проц опять же выдерживает setup/hold. Смысла в синхронизаторах на адресе/данных нет.
А насчет времянки повторю еще раз это мультицикловые пути, правильно пропишите констрейны и проблем не будет. Я выше написал, что согласен насчет не-нужности двукаскадных схем синхронизаций для УЖЕ синхронного интерфейса. Тем не менее, первый каскад защелок кмк все равно надо ставить, даже если пути - малтисайкл. Точнее не так - Если исходить из концепции простоты дизайна и нацеливаться на low power asic, то можно сразу ставить защелки с использованием незащелкнутых управляющих сигналов - т.е. делать простой интерфейс "как на россыпи". Но! Если требуется стабильная и быстродействующая прошивка для ПЛИС, или же мы боремся со снижением нагрузки на цепи в асике, то имеет смысл ставить один(1) каскад d-триггеров на весь входной интерфейс, и уже потом разгребать всю логику внутри. Преимущества уже указаны - снижение нагрузки на цепи. С большой нагрузкой может и мальтисайкл 3 не спасти, а про разброс времянки от_разводки_к_разводке я и вовсе молчу. По крайней мере, отлаживая модель для PCI я добивался большей производительности именно введением дополнительных d-триггеров. Впрочем, в PCI еще и адрес/данные мультиплексированы, немного сложнее ситуация. Итого, я с самого начала не опровергаю правильность первого кода, просто указал на возможную альтернативу более синхронной реализации, со своими + и - ессно. А картинку смотрел невнимательно, сразу не понял, что интерфейс синхронный, каюсь.
|
|
|
|
Сообщений в этой теме
%-) Чтение данных из CPU в FPGA Nov 23 2009, 06:08 SFx а почему шина адреса не используется? все подряд д... Nov 23 2009, 06:22 %-) Цитата(SFx @ Nov 23 2009, 10:22) а почему... Nov 23 2009, 06:57  SM Цитата(%-) @ Nov 23 2009, 09:57)... Nov 23 2009, 07:04   %-) Цитата(SM @ Nov 23 2009, 10:04) Так расск... Nov 23 2009, 07:17    Dima_G Цитата(%-) @ Nov 23 2009, 11:17)... Nov 23 2009, 07:20 SM вот на верилоге. на вхдл сами переводите если очен... Nov 23 2009, 06:39 SM Вы сначала определитесь, что эти данные с выхода р... Nov 23 2009, 07:20 dvladim Цитата(%-) @ Nov 23 2009, 11:17)... Nov 23 2009, 08:34 %-) диаграммы ниже.
отвечаю на вопросы от SM
данные ... Nov 23 2009, 08:37 SM Тогда, наверное, надо работать по CLKOUT (если ПЛИ... Nov 23 2009, 08:52 dvladim Цитата(%-) @ Nov 23 2009, 12:37)... Nov 23 2009, 09:03 SM Ну вы бы асики-то не приплетали... Там все на так,... Nov 23 2009, 14:55 Shivers Цитата(SM @ Nov 23 2009, 17:55) Ну вы бы ... Nov 23 2009, 15:04  SM Цитата(Shivers @ Nov 23 2009, 18:04) Если... Nov 23 2009, 15:06 dvladim Цитата(Shivers @ Nov 23 2009, 16:40) Это ... Nov 23 2009, 20:45 %-) вот часть дизайна, которая перехватывает обращение... Nov 23 2009, 23:13 BSV Делал интерфейс с Блэкфином на Спартан 3. Использо... Nov 24 2009, 01:11 %-) Цитата(BSV @ Nov 24 2009, 05:11) В коде и... Nov 24 2009, 02:37  des00 Цитата(%-) @ Nov 23 2009, 20:37)... Nov 24 2009, 04:19 SM Еще констрейны покажите. Исходника мало. Nov 24 2009, 05:55 %-) Цитата(SM @ Nov 24 2009, 08:55) Еще конст... Nov 24 2009, 06:44  SM Цитата(%-) @ Nov 24 2009, 09:44)... Nov 24 2009, 07:13 SFx констрейны - это ограничения, которые требуется вы... Nov 24 2009, 07:18 %-) Цитата(SFx @ Nov 24 2009, 10:18) констрей... Nov 24 2009, 07:22  SM Цитата(%-) @ Nov 24 2009, 10:22)... Nov 24 2009, 07:25   %-) Цитата(SM @ Nov 24 2009, 11:25) Создаете ... Nov 24 2009, 08:22    SM Цитата(%-) @ Nov 24 2009, 11:22)... Nov 24 2009, 08:24     %-) Цитата(SM @ Nov 24 2009, 12:24) А дальше ... Nov 25 2009, 05:46 dvladim Цитата(%-) @ Nov 24 2009, 06:37)... Nov 24 2009, 19:17 %-) проблема почти полностью решена с помощью буфера м... Nov 25 2009, 03:15 SM для WE - если он заведен как тактовый сигнал creat... Nov 25 2009, 11:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|