|
Picoblaze для Altera |
|
|
|
Sep 13 2009, 12:20
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 19-11-05
Пользователь №: 11 082

|
Привет всем! Интересует опыт применения Picoblaze для Altera. Кто-нибудь делал такое?
|
|
|
|
|
Sep 13 2009, 18:33
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 16-01-09
Пользователь №: 43 460

|
Такая штука называется Pacoblaze http://bleyer.org/pacoblaze/. Здесь как-то обсуждали. Занимает слишком много ресурсов в отличии от Xilinx Picoblaze
|
|
|
|
|
Sep 14 2009, 03:01
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(gk2 @ Sep 13 2009, 13:33)  Такая штука называется Pacoblaze http://bleyer.org/pacoblaze/. Здесь как-то обсуждали. Занимает слишком много ресурсов в отличии от Xilinx Picoblaze Не на всех фпга от альтеры, основная проблема это регистровый файл на памяти с асинхронным чтением, но и тут у альтеры есть сподвижки. Вариантов оптимизация портирования много, вот несколько по месту : 1. можно уменьшить количество регистров до 4-х + scratch pad на блочной памяти 2. использовать квази-асинхронную блочную память, да времянка упадет. но многим не критично. 3. использовать просто блочную память + подпилить секвенсер конвейера %)
--------------------
|
|
|
|
|
Sep 15 2009, 05:59
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Methane @ Sep 15 2009, 13:28)  тут обсуждают что нет, а я помню что в первом точно была. во втором уже нету? что такого не припомню вовсе  в циклонах память была и есть M4K асинхронная было в асексах
--------------------
Cogito ergo sum
|
|
|
|
|
Sep 15 2009, 07:12
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Цитата(Methane @ Sep 15 2009, 09:03)  Ну и память как память. Чего её нельзя как регистровый файл использовать? Что такого военного в ксилинксах? Память как память. Только данные на выходе появляются в следующем такте, после того как выставлен адрес. А для проца с машинным циклом в 1 такт нужно чтоб сразу. Ну или конвеер лепить, чтоб адрес зараннее выставлять.
|
|
|
|
|
Sep 15 2009, 08:19
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Methane @ Sep 15 2009, 01:44)  Я не помню что в циклонах. Двухпортовое ОЗУ там точно можно было сделать. вы не на то свойство смотрите, повторю еще раз Без асинхронной на чтение памяти вам придеться переделать конвейер. у блочной памяти чтение занимает 1 такт, в результате цикл придеться делать 3-х фазным 1. выборка 2. алу 3. write_back или 1. выборка 2. алу/write_back но этот вариант изменит временные соотношения на шине пикоблейза, т.к. она вместо аналога APB 2.0 станет аналогом вишбона с ws = 0. Если бы все было так просто, тогда Кен Чапмен заложил бы в свой процессор возможность использовать блочную память, лишние 1к регистров всегда пригодились бы.
--------------------
|
|
|
|
|
Sep 15 2009, 17:26
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(SM @ Sep 15 2009, 20:05)  Не знаю, как в альтере, а в асике байпасный путь мне не подпортил ровном счетом ничего, даже немного улучшил критический путь. А все из-за того, что мультиплексор + синхронная память оказались шустрее асинхронной, позволяющей читать записываемое. Асинхронная память в FPGA не для "чтения записываемого" - у синхронной блочной памяти есть режим "write first", и байпасные пути для этого не требуются. Асинхронный режим нужен для чтения и записи по разным адресам в одном такте и для одного порта. Например, когда в текущем такте (i) прочесть по двум адресам А(i), В(i), и записать по третьему адресу С(i)==B(i-1). Байпасные пути не помогут. Те режим 2х-портового чтения--модификации--записи в каждом такте - как реализовать на синхронной памяти?
|
|
|
|
|
Sep 15 2009, 17:46
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 19-11-05
Пользователь №: 11 082

|
Цитата(SM @ Sep 15 2009, 20:05)  Не знаю, как в альтере, а в асике байпасный путь мне не подпортил ровном счетом ничего, даже немного улучшил критический путь. А все из-за того, что мультиплексор + синхронная память оказались шустрее асинхронной, позволяющей читать записываемое. Вы использовали "правленный" picoblaze в асиках? Может выложите исходники, а мы для Альтеры попробуем.
|
|
|
|
|
Sep 15 2009, 18:34
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Цитата(Leka @ Sep 15 2009, 20:26)  Асинхронная память в FPGA не для "чтения записываемого" - у синхронной блочной памяти есть режим "write first", и байпасные пути для этого не требуются. Асинхронный режим нужен для чтения и записи по разным адресам в одном такте и для одного порта. Например, когда в текущем такте (i) прочесть по двум адресам А(i), В(i), и записать по третьему адресу С(i)==B(i-1). Байпасные пути не помогут.
Те режим 2х-портового чтения--модификации--записи в каждом такте - как реализовать на синхронной памяти? Можно взять 2 блока памяти, писать в оба одновременно (содержимое памяти будет одинаковое), читать из одного блока операнд А, из другого операнд Б.
|
|
|
|
|
Sep 16 2009, 03:22
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Sep 15 2009, 11:05)  Не знаю, как в альтере, а в асике байпасный путь мне не подпортил ровном счетом ничего, даже немного улучшил критический путь. А все из-за того, что мультиплексор + синхронная память оказались шустрее асинхронной, позволяющей читать записываемое. ну то в асике %) для фпга вижу несколько "проблем" : 1. блочная память, в отличие от распределенной находиться только в определенных местах фпга : это надо будет учесть при разводке мультиплексоров и алу. 2. появляется лишний слой логики на выходе блочной памяти (байпас на шину и однотактное алу) что с учетом б ольших задержек при работе с блочной памятью даст увеличение критических путей %) Цитата(Leka @ Sep 15 2009, 12:26)  Асинхронная память в FPGA не для "чтения записываемого" - у синхронной блочной памяти есть режим "write first", и байпасные пути для этого не требуются. Асинхронный режим нужен для чтения и записи по разным адресам в одном такте и для одного порта. Например, когда в текущем такте (i) прочесть по двум адресам А(i), В(i), и записать по третьему адресу С(i)==B(i-1). Байпасные пути не помогут.
Те режим 2х-портового чтения--модификации--записи в каждом такте - как реализовать на синхронной памяти? для пикоблейза это не актуально, т.к. у него такт проца всегда двухфазный, и регистровый файл можно просто сделать на одном элементе блочной памяти, все начинает портить латентность чтения этой памяти и особенности реализации АЛУ данного проца %)
--------------------
|
|
|
|
|
Sep 16 2009, 06:59
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Sep 16 2009, 00:54)  Да не проблема это. У асинхронной памяти время доступа куда больше, чем Tco синхронной. Итого Tpd асинхронной больше, чем (Tco синхронной + Tpd байпаса)
Ну и можно собрать для аррии например, у нее и распределенная память есть. для асика может быть, вот из даташита на спартан3е, для распределенной памяти "время чтения" TILO The time it takes for data to travel from the CLB’s F (G) input to the X (Y) output 0.66ns для блочной TBCKO When reading from block RAM, the delay from the active transition at the CLK input to data appearing at the DOUT output 2.45ns на альтеры с распределенной памятью пикоблейз легко переноситься
--------------------
|
|
|
|
|
Sep 16 2009, 13:40
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977

|
Я года два или три назад написал свою версию пикоблейза для Альтеры. Для того чтобы не городить асинхронную память на распределенной логике был поставлен блок встроенной памяти для регистрового файла. Для этого пришлось пожертвовать тактами - цикл процессора 4 такта. Поскольку пикоблейз используется в проектах для решения вспомагательных задач не критичных ко времени выполнения, для меня это не принципиально. При этом я получил определенные преимущества: высокая тактовая (более 100МГц), в четыре раза больший регистровый файл, возможность объединить память программ и регистровую память в одном блоке если программа маленькая. Занимаемый объем после компиляции около 270 lcell и 64 dedicated registers в циклоне 3 без учета встроенной памяти. Кстати компилятор не анализирует выход за размер регистрового файла в 64 регистра, а команда вмещает 256 локаций регистров. Это количество регистров в некоторых проектах очень выручало  . Пользуюсь компилятором pBlaseIDE версии 3.6.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|