реклама на сайте
подробности

 
 
> Чтение данных из CPU в FPGA, vhdl
%-)
сообщение Nov 23 2009, 06:08
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



сигналы:
ce - выбор ПЛИС (активное 0)
we - запись в ПЛИС (активное 0)
d[7 downto 0] - данные которые надо записать в ПЛИС

как сделать простейшее чтение данных из шины процессора в ПЛИС на vhdl ?

наподобие как запись в SRAM
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shivers
сообщение Nov 23 2009, 09:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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. Но будет больше потреблять, займет больше места внутри плис и т.д. В общем, свои + и -
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 23 2009, 10:43
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shivers @ Nov 23 2009, 03:46) *
Смотря какие тайминги, и смотря как скорость ПЛИС. Для высоких скоростей работы я бы посоветовал делать полностью синхронный дизайн: работать по CKOUT, на все сигналы двойную синхронизацию, а только потом уже защелки.


при работе на CLKOUT в режиме source-synchronus синхронизаторы вообще не нужны, а при работе на другом асинхронном клоке на все сигналы ставить синхронизаторы, это простите меня бред. К тому же чреватый потенциальными проблемами, данные и адрес хлопать на триггерах не имеет смысла, т.к. это мультицикловые пути и условие по setup/hold легко выполняется протоколом шины.


--------------------
Go to the top of the page
 
+Quote Post
Shivers
сообщение Nov 23 2009, 12:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 23 2009, 14:27
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shivers @ Nov 23 2009, 06:40) *
Это не бред, а помехоустойчивость. Если CKOUT - синхронный клок, то можно защелки и сразу ставить, бесспорно. Но если асинхронный, то двойная классическая схема синхронизация обязательна, иначе будете ловить все помехи на шине. В частности, в мостовых схемах асинхронных магистральных интерфейсов без этого никуда - внешний тактовый сигнал и сплошные схемы синхронизации. Опять же оговорюсь, этот кусок кода предназначен для помехоустойчивости, стабильности и хорошей времянки. Минусы емкость, ну и т.д. - писал выше.


Вы одно с другим путаете. Может быть в асинхронных магистральных интерфейсах вы и правы. Но тут стоит проц, на его шине висит фпга, Шина параллельная, синхронная, работающая в асинхронном режиме (расстояние между процом и фпга не выше ~10см). CLKOUT определяет на шине все. Если посмотрите внимательно на картинку то видно что проц выдерживает и setup/hold самостоятельно. Еще раз при работе от CLKOUT (source-synchronus) синхронизаторы ставить вообще смысла нет, адрес/данные это мултицикл, нужно только вырезать фазу сигнала записи/чтения. А при работе на клоке фпга в асинхронном режиме, ставить синхронизаторы как это делаете вы тоже смысла не имеет, т.к. проц опять же выдерживает setup/hold. Смысла в синхронизаторах на адресе/данных нет.

А насчет времянки повторю еще раз это мультицикловые пути, правильно пропишите констрейны и проблем не будет.


--------------------
Go to the top of the page
 
+Quote Post
Shivers
сообщение Nov 23 2009, 14:49
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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 еще и адрес/данные мультиплексированы, немного сложнее ситуация.
Итого, я с самого начала не опровергаю правильность первого кода, просто указал на возможную альтернативу более синхронной реализации, со своими + и - ессно. А картинку смотрел невнимательно, сразу не понял, что интерфейс синхронный, каюсь.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- %-)   Чтение данных из 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016