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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ADSP BF532 и TMS320C6745, помогите с выбором
__inline__
сообщение Mar 26 2018, 13:51
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Здравствуйте.

Ищу процессор в QFP корпусе, который будет производительнее, чем ADSP BlackFin BF532.
Цель: запуск обильного кода с 2D графикой (bitblt, colorkey, alfablending) + немножко 3D (поворот, перенос, масштабирование), тригонометрия. + эмуляция процессоров -8 и 16 бит:
Z80, 6502, M68000. + декодирование видео (H264, MJPEG,...) аудио (MP3, FLAC)

Пробовал собирать эмуляторы на BF532, разогнал до 700 МГц. Иногда эмуляция всей системы не достигает 60 FPS из-за отсутствия floating point, медленной производительности.

В качестве кандидата на замену рассматриваю : TMS320C6745 - доступен, корпус QFP, 475 МГц, шина SDRAM 32 бита, есть floating point, VLIW до 6 команд одновременно. Вроде как лучше чем BF532 ? Или даст выигрыш по сравнению с 532-м незначительно?

Сообщение отредактировал __inline__ - Mar 26 2018, 13:53
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 26 2018, 15:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(__inline__ @ Mar 26 2018, 16:51) *
В качестве кандидата на замену рассматриваю : TMS320C6745 - доступен, корпус QFP, 475 МГц, шина SDRAM 32 бита, есть floating point, VLIW до 6 команд одновременно. Вроде как лучше чем BF532 ? Или даст выигрыш по сравнению с 532-м незначительно?

Так если Вы говорите что OMAP-L137 есть уже в QFP, то почему тогда не его? Там помимо DSP, ещё 3 ядра - думаю не лишние будут rolleyes.gif
По-крайней мере у меня ARM-ядро всей периферией занималось, разгружая DSP для вычислений.
+ ещё два PRU-ядра, которые предназначены для эмуляции недостающей периферии (для Ваших эмуляторов может как раз подойдут), имеют очень параллельную систему команд (как смутно вспоминается - одна команда кодирует сразу несколько операций). Правда в моё время для PRUSS можно было писать только на асм - си-компилёра не существовало. Но может уже сделали.

PS: Да и кроме OMAP-L137 есть ещё его собрат: OMAP-L138 - он по скорости такой-же, только вроде поддерживает DDR, имеет немного другой набор периферии и у него дефолтным ядром является - ARM (у L137 дефолтное - DSP). Правда насколько помню, в BGA он имел бОльшее кол-во ног, так что его может и не быть в QFP.
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 26 2018, 17:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



allwinner V3s
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 28 2018, 05:51
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(_pv @ Mar 26 2018, 17:09) *
allwinner V3s


У вас есть опыт работы с этим камнем без пингвина и ведра?

Внешней шины для подключения дополнительной периферии, наподобие как FSMC у STM32 у V3s как я понял нет? Если так - прощай дисплеи с контроллерами и своей памятью ..


Цитата(jcxz @ Mar 26 2018, 15:00) *
Так если Вы говорите что OMAP-L137 есть уже в QFP, то почему тогда не его? Там помимо DSP, ещё 3 ядра - думаю не лишние будут rolleyes.gif

Тот что в QFP OMAPL137-HT недоступен для заказа из-за политики США по отношению к РФ.
В БГА мне неинтересно.


Сообщение отредактировал __inline__ - Mar 28 2018, 05:49
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 28 2018, 11:24
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Смотрю в даташит на 6745 и вижу - 2 шины EMIF A, B, что очень радует. Но огорчила урезанность шин в 2 раза в QFP корпусе: вместо 32- и 16- имеем 16- и 8- соответственно.

Посему возник вопрос. Планирую дисплей с шиной 16 бит (LCD, не тупая матрица) соединить по шине 8 бит. Можно ли сделать 16-битность дисплею таким макаром:

Код
CPU   LCD

D0-----D0
D1-----D1
D2-----D2
D3-----D3
D4-----D4
D5-----D5
D6-----D6
D7-----D7

BA0----D8
BA1----D9
A0------D10
A1------D11
A2 ------D12
A3------D13
A4------D14
A5------D15

A12-----Command/Data
CS[]-----LCD CS
nWR-----LCD nWR
Pull Up----LCD nRD


И обращаться к регистрам/ данным дисплея так:

обращаться к памяти LCD:
Код
*(int*)(LCD_Data_Base|(Data>>8))=Data;


к командам:
Код
*(int*)(LCD_Command_Base|(Command>>8))=Command;


Всёравно для дисплея нужен только 1 адресный бит, более ничего на шине не будет. А SDRAM будет висеть на 16-битной шине.

Пройдет или нет?

Правда , ещё DMA-пересылки надо будет хорошо продумать при таком подключении

Сообщение отредактировал __inline__ - Mar 28 2018, 11:26
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 28 2018, 11:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(__inline__ @ Mar 28 2018, 14:24) *
Всёравно для дисплея нужен только 1 адресный бит, более ничего на шине не будет. А SDRAM будет висеть на 16-битной шине.

я уже смутно помню, но вроде EMIX B - для дин.памяти, а EMIF A - для статической и всего остального.
Ну или достать OMAP и реализовать контроллер LCD на PRUSS с любой шиной. laughing.gif
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 28 2018, 18:34
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(__inline__ @ Mar 28 2018, 12:51) *
У вас есть опыт работы с этим камнем без пингвина и ведра?

нет, и скорее всего граблей там будет предостаточно, учитывая китайскую документацию.
но как будто пингвин это что-то плохое.
Цитата(__inline__ @ Mar 28 2018, 12:51) *
Внешней шины для подключения дополнительной периферии, наподобие как FSMC у STM32 у V3s как я понял нет? Если так - прощай дисплеи с контроллерами и своей памятью ..

там есть параллельный 24х видео выход,
и он даже support i80 interface with 18/16/9/8 bit, если не врут.
ну а вообще мелкая cpld за <1$ параллельную шину для дисплея сделать может даже из SDIO какого-нибудь. раз уж так надо именно дисплей со своим контроллером подключить, хотя дисплей со своим контроллером при наличии на борту памяти и видеовыхода - "троллейбус из буханки черного или белого хлеба.jpg"
Цитата(__inline__ @ Mar 28 2018, 12:51) *
В БГА мне неинтересно.

qfp и производительность гораздо больше чем у блэкфина, sdram, и дисплей - тут или трусы снимите или крестик наденьте.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 29 2018, 00:23
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(_pv @ Mar 28 2018, 19:34) *
нет, и скорее всего граблей там будет предостаточно, учитывая китайскую документацию.
там есть параллельный 24х видео выход,
и он даже support i80 interface with 18/16/9/8 bit, если не врут.


Смотрел даташит на v3s и схему камдроида на нём и пришёл к 2-м печальным выводам:
1) шина там только на 8 бит
2) и только RGB, а не i8080, управляющих стробов (nWR,nRD,nCS) я не нашёл, также как и их описания в даташите.

Кусок подключения LCD к v3s в камдроиде:
Прикрепленное изображение


Цитата(_pv @ Mar 28 2018, 19:34) *
ну а вообще мелкая cpld за <1$ параллельную шину для дисплея сделать может даже из SDIO какого-нибудь. раз уж так надо именно дисплей со своим контроллером подключить,

И проиграть в помехозащищённости - гнать БИТОВЫЙ клок, который должен быть в 8- или в -16 раз больше по частоте чтобы битики в байты преобразовать (некий параллельный регистр с последовательной загрузкой). Ну и нагромождение.

Цитата(_pv @ Mar 28 2018, 19:34) *
хотя дисплей со своим контроллером при наличии на борту памяти и видеовыхода - "троллейбус из буханки черного или белого хлеба.jpg"


А один фиг тупую матрицу прийдётся цеплять на SPI или I2S, так что одним RGB-интерфейсом не отделаешься! А вот если i8080 - то это уже сказка! sm.gif

Но беда в том, что C6745 который мне так понравился в QFP содержит только 16 и 8 битную шину, а хочется 32 и 16 как в БГА sm.gif

Цитата(_pv @ Mar 28 2018, 19:34) *
qfp и производительность гораздо больше чем у блэкфина, sdram, и дисплей - тут или трусы снимите или крестик наденьте.


Нашёл тут ещё кандидата - STM32H743 - у него 1 Мбайт внутренней оперативы на частоте 400 МГц- весь код эмулятора туда можно затолкать,
32 бита SDRAM - на случай если некоторвые эмуляторы не поместятся + чтение РОМ-ов для эмуляторов + спроецированная FatFS - всё в SDRAM!

Ну и RGB интерфейс там 24-битный (в корпусе LQFP208 точно!) и 32 разряда на SDRAM.

И ещё питание одно - 3.3V, нет дополнительного гемороя с питанием как в Оллвиннерах и C6745.

Ядро Cortex-M7 с его вкусным многооперандными командами Ассемблера типа: addeq r0,r1,r2 LSL r3 - 4 действия в одном - это лучше чем BF532 на 400 МГц и его 16-битной шиной!
И наличие плавающей точки!
И QFP корпус.
И шить можно ST-LINK-ом то бишь дискавери.

И 2D- ускоритель с 2-D DMA, цвет прозрачности, BitBlt - это всё для эмуляторов нужно!! sm.gif

Одни плюсы!

В общем вижу его в кандидатах на замену 532-го. santa2.gif
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 29 2018, 04:35
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(__inline__ @ Mar 29 2018, 07:23) *
Смотрел даташит на v3s и схему камдроида на нём и пришёл к 2-м печальным выводам:
1) шина там только на 8 бит
2) и только RGB, а не i8080, управляющих стробов (nWR,nRD,nCS) я не нашёл, также как и их описания в даташите.


мы наверное в разные даташиты смотрим.
1) LCD_D[23:0]
2) бит TCON0_IF в регистре TCON0_CTL_REG и регистры TCON0_CPU_*
CS, WR, RD, A1 должны быть мультиплексированы с Hsync, Vsync, LCD_Clk, LCD_DE
но документация - китайская

Цитата(__inline__ @ Mar 29 2018, 07:23) *
И проиграть в помехозащищённости - гнать БИТОВЫЙ клок, который должен быть в 8- или в -16 раз больше по частоте чтобы битики в байты преобразовать (некий параллельный регистр с последовательной загрузкой). Ну и нагромождение.

да ладно, sdram на сотне МГц с 16/32 параллельной шиной так в помехозащищенности видимо выигрывает, а вот 4х битный SDIO на 80 - уже почему-то нет.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 29 2018, 07:33
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(_pv @ Mar 29 2018, 05:35) *
мы наверное в разные даташиты смотрим.
1) LCD_D[23:0]
2) бит TCON0_IF в регистре TCON0_CTL_REG и регистры TCON0_CPU_*
CS, WR, RD, A1 должны быть мультиплексированы с Hsync, Vsync, LCD_Clk, LCD_DE
но документация - китайская

должны быть, но не обязаны. Я глянул даташит на V3s что у меня есть (на английском), там расписаны времянки, но самих стробов CS, WR, адресные биты A* на выводах микроконтроллера НЕ нашёл. Таблицы мультиплексирования выводов тоже молчат.

Просто приводят картинку с времянками, которая как бы намекает, что без дополнительной логики (ПЛИС, ЦПЛД,рассыпуха) не обойтись:

Прикрепленное изображение


У вас даташит другой или тоже английский?

Цитата(_pv @ Mar 29 2018, 05:35) *
да ладно, sdram на сотне МГц с 16/32 параллельной шиной так в помехозащищенности видимо выигрывает, а вот 4х битный SDIO на 80 - уже почему-то нет.


Был один головняк(SDRAM), будет два (преобразователь SDIO в i8080 для LCD sm.gif )

А линукс и камадроид не даст ответов на этот вопрос, потому что там везде "стандартная" связка LCD с v3s по RGB-интерфейсу.

Сообщение отредактировал __inline__ - Mar 29 2018, 07:35
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 29 2018, 09:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(__inline__ @ Mar 29 2018, 03:23) *
Ядро Cortex-M7 с его вкусным многооперандными командами Ассемблера типа: addeq r0,r1,r2 LSL r3 - 4 действия в одном - это лучше чем BF532 на 400 МГц и его 16-битной шиной!

Только не забываем, что ARM-у чтобы сделать эту самую ADD над операндами в памяти, нужно эти операнды ещё в регистры загрузить, да потом ещё результат возможно нужно обратно в память выгрузить. В то время как система команд DSP обычно позволяет это делать одновременно. На C64xx-ядрах DSP я почти не писал на асм (за исключением небольших кусков), но вот к примеру на C55xx-ядре за один такт(!) можно посчитать 2 порядка КИХ-фильтра, т.е.: выполнить загрузку 1-го коэффициента фильтра из памяти + загрузку двух вх.значений из памяти + 2 MAC операции + 2 выгрузки вых.результатов в память + 0 тактов на организацию цикла (ведь всё это должно выполняться в цикле) + 0 тактов на организацию кольцевой адресации (если работаем с кольцевыми буферами вх и вых. данных). И всё это за один такт частоты ядра! И думаю, что на C64xx-ядре возможности должны быть явно не хуже, так как это более старшее ядро.
А теперь вопрос: за сколько тактов выполнит это всё STM32H7? Если учесть что ARM-ядро не поддерживает параллельное выполнение операций (загрузку/выгрузку из/в память одновременно с операцией на АЛУ), требует для доступа к памяти (1+1*N) тактов (где: N - число читаемых/записываемых слов в одной команде), не поддерживает аппаратные циклы и циклическую адресацию памяти.
Я конечно не имел дела с ADSP и блэкфинами, но думаю они должны иметь примерно такую же архитектуру, как и ядра TI.

Цитата(__inline__ @ Mar 29 2018, 03:23) *
Ядро Cortex-M7 с его вкусным многооперандными командами Ассемблера типа: addeq r0,r1,r2 LSL r3 - 4 действия в одном - это лучше чем BF532 на 400 МГц и его 16-битной шиной!

И где кстати тут 4 действия? Всего одно - сложение одного операнда с другим сдвинутым на R3 разрядов. laughing.gif
ARM вообще не имеет команд выполняющих более одного действия. Это архитектурное ограничение. МАС-операция это тоже не 2 или 3 или сколько там действий, а одно - MAC.
А вот настоящие DSP как правило - имеют. В этом и есть их главное различие.

Цитата(__inline__ @ Mar 29 2018, 10:33) *
Был один головняк(SDRAM), будет два (преобразователь SDIO в i8080 для LCD sm.gif )

Я не буду ничего советовать по интерфейсу подключения LCD (неохота разбираться в сигналах), но в том же C6745, как говорит сайт TI, есть 2 интерфейса McASP.
Я помню в OMAP-L137 я использовал один из двух McASP: это порт умеющий формировать до 16 последовательных битовых потока (он имеет 16 сериализаторов), каждый из которых можно независимо сконфигурить на ввод или вывод. Диаграмма сигналов на каждом программируется тоже независимо от других сериализаторов и очень гибко.
Обслуживать McASP может EDMA3 умеющий: 1-, 2- и 3-х-мерные пересылки (может пересылать 3-мерные матрицы) с независимыми произвольными приращениями по каждому измерению (можно например по строке делать скажем +N (положительное смещение на N слов), а по столбцу -M (отрицательное смещение на M слов). За счёт этого EDMA3 при пересылке может преобразовать массив с построчного на постолбцовый например. Также EDMA3 имеет 2 трансфер-контроллера, каждый из которых - независимый bus-master со своим приоритетом доступа к шине.

У меня например на одном McASP висело 3 шт. 8-канальных SPI-АЦП + стерео аудио-кодек (ввод и вывод). И всё это работало параллельно одновременно и обслуживалось через EDMA3.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 29 2018, 10:04
Сообщение #12


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Mar 29 2018, 12:43) *
ARM вообще не имеет команд выполняющих более одного действия. Это архитектурное ограничение. МАС-операция это тоже не 2 или 3 или сколько там действий, а одно - MAC.
А вот настоящие DSP как правило - имеют. В этом и есть их главное различие.

А поинтересуйтесь-ка командой USADA8 в ARMv7-M
Будете удивлены.


Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 29 2018, 10:09
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Mar 29 2018, 13:04) *
А поинтересуйтесь-ка командой USADA8 в ARMv7-M
Будете удивлены.

Не буду. Писал я на асм и на ARM. И знаю какие там есть инструкции.
Такие операции (не полной разрядности) как раз за счёт малого числа разрядов и могут выполняться на единственном АЛУ.
Я имел в виду операции полной разрядности.
А то ведь можно считать, что ORR R0, R0, R1 выполняет параллельно 32 операции OR...... над 1-битными операндами. laughing.gif
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 29 2018, 10:20
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Цитата(jcxz @ Mar 29 2018, 09:43) *
И где кстати тут 4 действия? Всего одно - сложение одного операнда с другим сдвинутым на R3 разрядов. laughing.gif

действие 1) проверка условия , если равно, выполняем: addeq r0,r1,r2 LSL r3
действие 2) сдвигаем r2 влево на значение бит в r3: addeq r0,r1,r2 LSL r3
действие 3) складываем r2 с r1: addeq r0,r1,r2 LSL r3:
дейсвтвие 4) записываем результат в r0: addeq r0,r1,r2 LSL r3

У Блекфина как-то тухло:
Код
...
    P1.L = _LCD;
    P1.H = _LCD;
    .align 2
    P0 = 272;
    P1 = P1 + P0;
    P0 = -256;
    P1 = P1 + P0;
    P0 = 144;
    [--SP] = (P5:3);
    P2 = 64;
    P5 = 0
    P5.H = 8193
    LOOP .P36L2L LC0 = P0;
...


Цитата(jcxz @ Mar 29 2018, 09:43) *
Я не буду ничего советовать по интерфейсу подключения LCD (неохота разбираться в сигналах), но в том же C6745, как говорит сайт TI, есть 2 интерфейса McASP.
Я помню в OMAP-L137 я использовал один из двух McASP: это порт умеющий формировать до 16 последовательных битовых потока (он имеет 16 сериализаторов), каждый из которых можно независимо сконфигурить на ввод или вывод. Диаграмма сигналов на каждом программируется тоже независимо от других сериализаторов и очень гибко.


Это типа ногодрыга как GPIO ? Надо 16 бит данных, 1 бит адреса, стробы CS, WR. На строб RD можно забить(не нужен, подтянуть к Vcc).

Цитата
А поинтересуйтесь-ка командой USADA8 в ARMv7-M


Типа DSP-инструкция, SIMD к тому же! sm.gif

-----

Касаемо Олвиннера V3s.
Вышел на форум китайцев https://debugdump.com/t_576.html - тут они тот самый дисплей что у меня (контроллер тот же) подключают к... SPI - и быстродействие всего 10 FPS.
Видимо, через 16 битную шину его не подрубить, раз SPI взяли

Сообщение отредактировал __inline__ - Mar 29 2018, 10:24
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 29 2018, 10:57
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(__inline__ @ Mar 29 2018, 13:20) *
действие 1) проверка условия , если равно, выполняем: addeq r0,r1,r2 LSL r3

Это не так. Это действие выполняется в предыдущей инструкции IT. И такт там тратится.
Цитата(__inline__ @ Mar 29 2018, 13:20) *
действие 2) сдвигаем r2 влево на значение бит в r3: addeq r0,r1,r2 LSL r3
действие 3) складываем r2 с r1: addeq r0,r1,r2 LSL r3:
дейсвтвие 4) записываем результат в r0: addeq r0,r1,r2 LSL r3

Вы ещё посчитайте перевод в дополнительный код в команде SUB за отдельное действие. biggrin.gif
Эти "действия" не считаются за отдельные операции в общепринятой терминологии. Даже QDSUB - всего одна операция, хоть там и умножение на два и суммирование и насыщение.
Иначе некоторые DSP-инструкции вообще бы по 20 действий выполняли. biggrin.gif

Цитата(__inline__ @ Mar 29 2018, 13:20) *
У Блекфина как-то тухло:

Странно....
У C55xx например:
FIRSADD *AR0+, *AR1-, *CDP+, AC0, AC1
Выполняется за 1 такт, делает чтение двух операндов из памяти с автоинкрементом (и возможно с циклической адресацией) *AR0+ и *AR1-, чтение одного коэфф. фильтра из памяти *CDP+ с автоинкрементом (и возможно с циклической адресацией), две MAC (AC0 += (*AR0) * (*CDP) и AC1 += (*AR1) * (*CDP)). Плюс ещё можно задать (опционально) умножение результата (после умножения перед сложением) MAC-ов на 2 и вроде ещё насыщение (точно не помню).
И параллельно этой команде можно в параллель ещё одну команду выполнить за тот же такт, лишь бы она не использовала уже занятые ресурсы. Занятые первой командой.

Цитата(__inline__ @ Mar 29 2018, 13:20) *
Это типа ногодрыга как GPIO ? Надо 16 бит данных, 1 бит адреса, стробы CS, WR. На строб RD можно забить(не нужен, подтянуть к Vcc).

Наверное сэмулировать 16-битную шину памяти на нём не получится - линий маловато. Ну если только как-то синхронизировать два McASP.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 22:41
Рейтинг@Mail.ru


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