Шукати в цьому блозі

середа, 28 вересня 2011 р.

Binary to BCD converter ( Part II ). Компілюєм проект в Quartus II.

      Quartus II ver.11  теж здивував навіть більше ніж MAX+plusII, можна сказати що найбільш оптимізаційна серія для комбінаторики є Arria II GX, Stratix, а вот від MAX 3000, MAX7000, якщо компілювати в MAX+plus II можна дещо зменшити використані ресурси CPLD . На рис. 1 показано де змінювались параметри синтезу під час проведення тесту в Quartus II ( Assigments/Settings ).

  Рис. 1

Результати тестування ...


Devices
Analysis & Synthesis Settings
Speed
used LE/LC/MC/LUT
Balanced
used LE/LC/MC/LUT
Area
used LE/LC/MC/LUT
(MAX3000)
43
30
28
(MAX7000AE)
43
30
28
Stratix
36
32
32
Stratix II
13
13
12
Stratix II GX
13
13
12
Stratix III
13
13
12
MAX V
31
31
31
MAX II
31
31
31
Cyclone
36
32
32
Cyclone II
32
32
32
Cyclone III
32
32
32
Cyclone IV
32
32
32
Arria II GX
13
13
12

середа, 14 вересня 2011 р.

Optimization binary to BCD converter. ( Part I)

      Якось потрібно було мені зробити binary to BCD convertor щоб запрограмити його в CPLD від Altera і бажано з найнижчим використанням ресурсів (логічних блоків), трохи погугливши знайшо даташіт на 74185, в бібліотеці MAX+plus II вона теж була. Довго не думаючи зробив маленький проект схему взяв з даташіта на 74185 рис.1.
 
Рис.1
      
Далі відкриваю файл з розширенням *.rtf, щоб глянути на результати компіляції. І от лишенько проект зайняв 32LE, тобто якщо брати CPLD на 32LE то тоді туди вже більше нічого не влізе. Далі вирішив протестити проект і закомпілювати його під різні серії CPLD та FPGA. Компіляцію проводив на  версії MAX+plus II ver. 10.0. 
Ось результати ….


Devices
Defining a Logic Synthesis Style
Fast
used LE/LC
Normal
used LE/LC
WYSIWYG
used LE/LC
(Classic)
32
32
41
(MAX3000)
41
32
39
(MAX7000)
41
32
39
(MAX9000)
42
40
44
(FLEX 6000)
43
43
72
(FLEX 8000)
44
43
71
(FLEX 10K)
44
42
71
(ACEX 1K)
44
42
71

Чесно кажучи результати більш ніж вразили, самі простенькі серії типу Classic, Max3000, Max7000 краще оптимізують логіку ніж круті серії з тригерами та пам’яттю. Всі параметри синтезу були виставленні по замовчуванню див. Рис. 2 , Рис. 3.

Рис. 2.

   
Рис. 3
 Глобальні параметри виглядають так Рис. 4.

Рис. 4
Крім того дуже здивували результати синтезу проекту в серії MAX3000, MAX7000,  MAX9000 на основі комбінаторної логіки при зміні параметрів в Advanced Options рис. 5, стиль синтезу NORMAL

   
Рис. 5
Ось результати...
Total logic cells used:                         21/32     ( 65%)
При синтезі в мікросхему MAX3032 або в MAX7032.

Total logic cells used:                         25/320    (  7%)
При синтезі в мікросхему MAX9000(EPM9320LC84-15)
     
       Жовтим позначено скільки ЛБ займає проект в тій чи іншій серії мікросхеми.  Як результат вирішив бінарний конвертор в BCD зробити на двох лічильниках, в однин з них буде завантажуватись бінарний вхідний код і при кожному CLK буде віднімати 1 і коли лічильник дорахує до 0 припинити віднімати, інший буде як група BCD лічильників(я використовував 74190 з загальної бібліотеки  ) каскадованих між собою(в нашому випадку 3 BCD лічильника), тільки вони вже будуть додавати 1 до свого результату при приході CLK.Лічильники будуть працювати паралельно тільки один додавати , другий віднімати. Далі невеличка схема керування при досягненні 0 на першому лічильнику відключити CLK на першому і другому лічильнику, далі щось робимо з результатом як варіант переводимо ВСD в 7 segment індикацію( використовував серію 7449). В цієї схеми є й недоліки потрібно скажімо так, час для обрахунку результату, але людина не може сприймати зображення яке міняється з частотою більше ніж 50 Гц, а як правило схеми на CPLD працють на частотах min від 10 кГц(або і менше) і результат буде видаватись з частотою приблизно 40 Гц. Але перевага теж є буде займати значно менше ЛБ(LC), по приблизним підрахункам 8 ЛБ на перший лічильник, 4ЛБ * 3 BCD лічильника і копійки на схему керування, ну нехай 1-2ЛБ, і того 22ЛБ. При переході такої схеми на інші серії загальна кількість використаних ЛБ буде та сама, оскільки використовуються лише програмовані D-трігери з яких також складається ЛБ окрім серії Classic (це PLD і не містить D-трігерів).
            Таку схему можна використовувати для тестування і на інших серіях CPLD, FPGA, SOC від Altera та інших виробників. Думаю може скоро протестую в Quartus, а також цікавить Xilinx кажуть що в них з компілятором теж не все в порядку. Мені розказували одну історію коли брали один і той же проект і  компілювали під Xilinx та Аltera, правда на яких серіях не казали, виходило Altera більше оптимізує проект ніж Xilinx, я думаю що це більше пов’язано із внутрішньою структурою і системою зв’язків між ЛБ в середині CPLD, FPGA, SoC. Що стосується оптимізації на VHDL чи Verilog то це скоріше міф, оскільки все залежить від структури проекту який ти хочеш зашити в CPLD, FPGA, SoC, а також від самої структури CPLD, FPGA, SoC. Короче кажуть ти просто вибираєш мову якою вказуєш що CPLD, FPGA, SoC має робити, а що воно має робити ти вже сам визначаєш як інженер в структурі проекту.

P.S.  Можливо скоро навіть зявляться такі вакансії як CPLD, FPGA, SoC architecture optimization