Отговори на тема  [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща
vhdl или abel ще стане по-бързо? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение vhdl или abel ще стане по-бързо?
Не съм ползвал нито едното досега. Ползвал съм главно моя си логически
компилатор и phdl (последният потрябва за да разгадая оная част от coolrunner-ите
на филипс, дето бяха "забравили" да ми дадат).

Май abel е доста подобен на phdl и елементарен; това, което ще правя, също е елементарно
(ще влезе с лекота в 128 клетков coolrunner от новите, дето все още моят компилатор
не ги знае и няма време да го уча за тоя проект).

Някакъв vhdl опит очевидно ще ми е по-полезен, знам ли кога coolrunner-ите ще
ми отеснеят, но пък главното е да стане бързо - да няма учене повече от ден-два
до първия резултат, и да мога да контролирам нещата до най-ниско ниво.
vhdl-ът дава ли последната възможност? Ако не, забравям го докато потрябва.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Сеп 11, 2009 9:14 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение 
В средата za Xilinx има Схематик Едитор или нещо подобно беше.
Не съм го ползвал, но когато започвах с логоките ми се струваше най-лесен като за начало и за опростени работи, има си библиотека с някакви базови логически модули.


Пет Сеп 11, 2009 9:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
май трябва да учотниш тооочно какви искаш да правиш. и "най-ниско ниво" в цплд-та и фпга-тата е доста относително - можеш да ползваш примитиви, което обикновенно ти дава предимство доста да моделираш логиката до най-близкото желано състояние, т.е. да решиш по-успешно от синтезатора много от логическите уравнения (става, повярвай). но абсолютното ниско ниво е да руутваш сам в едитора да кажем след синтезиса, което вярвам в българия я има 2-ма души дето да го могат, а може и толкова да няма. ако кажеш каква точно е задачата на този фрагмент може да успея да ти помогна (с верилог обаче, вхдл-то не ми е много сила, абела ми е непознат).


Пет Сеп 11, 2009 9:36 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
какво си решил да правиш?
доколкото те познавам, мисля че абела ще ти пасне повече на хардуерната душа.


Пет Сеп 11, 2009 9:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
@tqi,

КАТЕГОРИЧНО ти забранявам дори да си мислиш за ABEL :D

Това не е език, а по-скоро нет-лист! Работата с него е мъчение, а резултатът отвратителен! Проблемът е че работиш на много ниско ниво, което за теб може и да не е проблем, защото ти си падаш по асемблиране, но в случая правиш нет-лист на схема с едни компоненти, а компилатора трябва да направи схема с други компоненти.
Все едно да пишеш на асемблер за х86 пък после да се конвертира за РРС. Можеш да си представиш какъв код ще се получи!

Ако ще се двуумиш прави го между verilog и vhdl. Разликата там е в синтаксиса. Който синтаксис ти допадне - него ползвай. Предимствата на HDL-те е, че описваш логика, а не схема. Така даваш шанс на компилатора да ти направи сравнително добра схема, защото той много добре познава наличните компоненти (инструкции) и има логика, която може да преработи така че да се получи най-подходящата схема.

Иначе конкретно, с ABEL е почти невъзможно да правиш йерархия и да пишеш универсален код, който да ползваш в различни проекти. Все едно асемблер, без макроси и без подпрограми. А то дори и да имаше макроси и подпрограми, ти се стремиш да направиш схемата според конкретната архитектура на PLD-то. А всяко CPLD и всяко FPGA е с различна архитектура.
Докато на HDL може да си правиш библиотеки т.е. никакви проблеми с "макроси" или "подпрограми". А пък дори и да искаш да си обвържеш кода с конкретна архитектура ще ти е трудно, т.е. кодът ти е платформено независим.

Но аз най-много ценя изразните средства и идеята за понятието "процес". С две думи с това се описва синхронна логика. Но вместо да избереш някакъв тип тригер (D, T, JK...) и да направиш нет-лист на пиновете правиш алгоритъм от сорта "ако има фронт, ако тоя пин е такъва, ако това, ако онова...".
Самата идея е много интересна - ти описваш алгоритъм от стъпки, което на С би се изпълнило стъпка по стъпка. Докато на PLD се изпълнява "мигновено" - няма никакви стъпки... Всъщност последователността се свежда до "приоритети". Убеден съм, че като човек свикнал да мисли алгоритмично това ще ти допадне, защото много по-лесно ще ти е да мислиш по тоя начин.
И на самия компилатор това много му допада, щото той може да си избере какви тригери да ползва и как да ги навърже.
За сравнение при АБЕЛ трябва да измислиш схема от някакви тригери. Много тригери... А пък компилаторът трябва да се чуди какво да прави ако ти си сложил един вид тригери, а пък в матричката има друг вид....


Пет Сеп 11, 2009 10:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Ми аз искам именно ниското ниво, няма да му сменям платформата.
После аз обикновено изстисквам нещата до последно, няма да повярвате кво
съм успявал да напъхам в 64 клетково cpld.

Обаче Миро сериозно ме плаши - тоя abel, дето го дават xilinx уж за coolrunner-а,
наистина ли не знае всичко за него? Не мога ли да му казвам неща от рода на
"тая клетка, буфериран/небуфериран изход, инвертиран/неинвертиран, наклочен
от еди-къде си, тристейтнат от еди къде си" и такива работи? Ако не знае точната
архитектура надолу не би могъл да ми даде всички възможности - наистина ли е
толкова зле?
Не ми трябват улеснения, само достъп до пълните възможности на силиция.

Инак това, дето ще правя, е просто; сериализация на паралелни данни и подобни.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Сеп 11, 2009 10:43 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
абе има разни пропъртита за всеки пин.
повечето са стандартни, но има и специфични за xilinx. отделно има специфични и за фамилията на чипа.
най-добре разгледай хелпа - има примери.
един вентилатор на тази книжка вероятно ще те ориентира също
ftp://ftp.xilinx.com/pub/documentation/interfaces/xabel.pdf

може би ще ти допадне синтаксис като:
pin1.oe=a0;
d0.k=clk;
datareg.d := insig.pin;
и т.н.

по спомен phdl би трябвало е я някакъв под-сет на абела, а не на VHDL?


Пет Сеп 11, 2009 11:12 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Ми май за такава връзка и аз помня (phdl/abel), а щом има тия работи, дето
ми ги даваш за пример, ще ми стигне.
С подобни на времето мъчих седмица-две phdl-а, докато разгадая как рути
вътре мултиплексора в coolrunner-a, то това ютилити, дето го бях писал за разгадаване
от jedec пак ще влиза в работа и за тия явно, ама след тоя проект.
Ще се образовам идните дни като остане време и ще докладвам кво съм
направил :-).
Ама трябва да сглобя нещото първо, дано утре събера куража да почна да
подреждам по платката... (че не е малка а и от месеци насам само програмирам,
та си е бариера за прескачане).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Сеп 11, 2009 11:23 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
абе като за начало може и да се изсимулираш.
много е реалистичен симулатора. не се с лучвало да не видя нещо на него, дето се вижда с осцилоскопа.
пък и е на любимата ми фирма - ментор

може и да остарявам, но напоследък ми се струва по-разумно да цъкам 2 дена с мишата по симулатор, отколкото да размахвам една седмица поялник


Пет Сеп 11, 2009 11:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Просто забрави да работиш на ниско ниво!
Първо никога не знаеш какво точно има вътре. Е, хайде дават някакво описание на една клетка... колко входа има (това е важно), какви функции, каква технология - дали LUT или тригери + комбинаторна логика. Ама забрави да си мислиш че ще си по-добър от компилатор.... Нямаш никакъв шанс!
Примерно имам проекти с по няколко хиляди макроклетки. Ти представяш ли си да седна да определям кой сигнал от коя клетка да се получава и до кои да ходи... Да смятам времезакъснения и да оптимизирам пътища така че критичните сигнали да се вместят в честотата която ми трябва. А то не че мога да го сметна, щото никой няма да ми даде какво е закъснението от X до Y....

Всъщност... времезакъсненията биха могли да се свалят ;-) Като компилираш даден проект ти показва кой сигнал, къде го е рутнал и ако пуснеш симулации може да видиш и времена....

Но и да имаш данните, това е невъобразима хамалогия. По-скоро бих се самоубил, отколкото да седна да се занимавам с подобно нещо ;-)

Иначе това описваш на ABEL е виртуално. Ти казваш сложи един D-тригер примерно, на входа му подай тоя сигнал, за ресета тоя сигнал и т.н. Комбинаторната логика то естествено ти я оптимизира. Но за всеки твой виртуален тригер, то трябва да избере реална клетка. Със CPLD-та скоро не съм се занимавал, а и специално xilinx са ми непознати. Но да кажем при lattice едно време в една клетка слагаха един тригер и програмируема функция с N на брой входа (N варира според конкретното чипче). Всеки изход на пин, задължително консумира една клетка, независимо дали е комбинаторна логика или логика с памет. Всеки бит (памет) яде 1 клетка (освен ако не е и изход-пин). Ако функцията която управлява клетката си я написал е с повече входове или по-сложна се ядат още клетки които се навързват каскадно. А пък тригера е от един определен вид, с определен брой входове (синхронни, или асинхронни). Като функциите на асинхронните и функцията на клока са много ограничени (ако изобщо може да са функция) и ако зададеш по-сложна логика - хоп още изядени клетки. Специалните пинове (асинхронни ресет, сет и т.н.) също не са пълен комплект. Обикновено само примерно ресет. Ако ти искаш "сет" - прави се с ресет + инвертор на изхода.
.....
И още хиляди детайли за конкретната реализация. А както казах на ABEL ти ползваш виртуални тригери - може да смесваш различни по тип, да ползваш сет/ресет и колкото и каквито входове искаш и т.н. Ако искаш един твой виртуален тригер да се компилира до 1 клетка трябва да внимаваш какви "виртуалности" ползваш. Иначе - хоп, клетките свършили...
И друг номер... с "мега-блоковете" - клетките образуват групи и вътре в групата свързаността е добра. Но ако трябва да прехвърляш междинни сигнали от един мегаблок в друг... айде пак заносани клетки, щото само изходите на всички клетки и всички пинове са в глобалната рутинг таблица, но не и междинните сигнали... А пък като почне да се понапълва CPLD-то и компилатора почва да се шашка - добавяш логика за още 1 клетка, но в блока който трябва да се сложи няма място и то размества и накрая вместо 1 изяжда 2-3 клетки...
Но и ти да си, и ти ще се шашкаш ;-)

Истината е само HDL-те, щото не задаваш какви тригери да се ползват, дали да има сет или ресет.... Компилаторът ги избира тези подробности вместо теб. Ти казваш "искам сигнал с такава логика..." Не те интересува дали ще ползва И-НЕ, или ИЛИ-НЕ, дали D или T или JK или RS или други тригери...


Пет Сеп 11, 2009 11:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
@tgi, много добър резултат <= ( верилог + примитиви );

да напишеш конвертиране от паралелен тип данни в последователен е сравнително лесно на този принцип. дори и само верилога ще ти свърши достатъчно добра работа, без да дълбаеш в примитивите, ако спазваш някакви правила при писане - синтезатора успешно разпознава повечето структури които се опитваш да напишеш. например:

Код:
module p_to_s ( clk,
                                  rst,
                                  data_in,
                                  data_out,
                                  read_en,
                                  write_en
);

input clk, rst, read_en, write_en; //входове, еднобитови
input [7:0] data_in; //вход 8 битов
output data_out;  //изход, еднобитов

reg [7:0] data_reg;

always@(posedge clk or posedge rst) // да си заредиш паралелните данни в регистър по положителен фронт на клока или да го нулираш
  if(rst == 1'b1)
      data_reg [7:0] <= 0; //нулирай рег-а
  else
      if(read_en == 1'b1) //ако е разрешено четенето от регистъра
       data_reg [7:0] <= {data_reg [6:0] , data_reg [7]} ; //шифтваш си на воля все на ляво, нищо не губиш
      else
        if(write_en == 1'b1) //ако е разрешен записа в регистъра
           data_reg [7:0] <= data_in [7:0]; //зареди данните в този ред (можеш и да ги swap-неш лесно -> [0:7] )
         
assign data_out = data_reg [7]; // хващаш състоянието на осмият бит от дата рег-а (тоя дето постоянно се променя заради шифта)

endmodule


това е наааай-прост пример, разбира се не от най-функционалните, но е показно колко лесно се пише конвертирането. и с другото е така.


Прикачени файлове:
tgi_example.jpg
tgi_example.jpg [ 54.81 KiB | Прегледано 2253 пъти ]
Съб Сеп 12, 2009 12:27 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
miro_atc написа:
Просто забрави да работиш на ниско ниво!
Първо никога не знаеш какво точно има вътре. Е, хайде дават някакво описание на една клетка... колко входа има (това е важно), какви функции, каква технология - дали LUT или тригери + комбинаторна логика. Ама забрави да си мислиш че ще си по-добър от компилатор.... Нямаш никакъв шанс!


Стига бе, Миро, колко неща съм направил така. Говоря за cpld-ta със 128 до 512 клетки.
Никой компилатор не може да сгъне и половината от това, което аз съм сгъвал вътре,
всеки бит ми влиза в работа (то на мене всичко ми влиза в работа, така ми казваше
майка ми едно време като бях малък :-) ).

Цитат:
Примерно имам проекти с по няколко хиляди макроклетки. Ти представяш ли си да седна да определям кой сигнал от коя клетка да се получава и до кои да ходи... Да смятам времезакъснения и да оптимизирам пътища така че критичните сигнали да се вместят в честотата която ми трябва.


Е в тоя случай явно ниското ниво не ти трябва, много по-бърз ще си на високото ако
имаш достатъчен ресурс в силиция.

Но моите 128 хубави клетки не ги давам на компилатора, искам си ги всичките.
Без моя си компилатор с макротата и DPS скрипта в него ще е рошава работа,
но ще стане някак, по-добре отколкото да нямам контрол и като не ще
да мога само да го гледам тъпо (т.е. не ми се поема такъв риск с vhdl-а,
затова и питам).

Ето един стар файл с моя логически език/компилатор; с две макрота 32 данни
са групирани в 32 реда: http://tgi-sci.com/misc/mb2ata.txt . Е, синтаксисът
и на макротата, и на скрипта (езикът го ползва като външен обект, който препроцесира
редовете) са мощни, ама то идеята нали е всичко да ни влиза в работа :-).

На мене това ми е стилът на мислене/работа, ако abel е
по-близко до това от vhdl-а той ще свърши работата.

Цитат:
Истината е само HDL-те, щото не задаваш какви тригери да се ползват, дали да има сет или ресет....


Е кво правя като ми трябва тригер със reset отнякъде? Аз ако това не мога
да го пипам хич не ща и да чуя за тия HDL-и. Ама би трябвало да може, xilinx
дават описание на клетките и в fpga-тата си, все някой ги ползва тия работи?

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Съб Сеп 12, 2009 12:48 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
head_up,
мерси за примера. Ами добре и изкушаващо изглежда. Малко по-високо ниво
на абстракция е отколкото аз бих искал, ама звучи сякаш човек може да отиде
и по-надолу ако потрябва - това рутене на ръка след синтезиса може ли човек
да го прави с безплатния пакет на xilinx ?

Ще падне чудене още някой друг ден докато поя и т.н.

Каква е мъката за първоначално учене (т.е. еквивалентът на "до първото hello world" )?

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Съб Сеп 12, 2009 12:57 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
ДедоБоре написа:
абе като за начало може и да се изсимулираш.
много е реалистичен симулатора. не се с лучвало да не видя нещо на него, дето се вижда с осцилоскопа.
пък и е на любимата ми фирма - ментор

може и да остарявам, но напоследък ми се струва по-разумно да цъкам 2 дена с мишата по симулатор, отколкото да размахвам една седмица поялник


Не бе, ти за съвсем откачен взе да ме броиш вече. И аз предпочитам симулатора
пред поялника, луд може да съм ама ефикасността ми е висш приоритет; симулаторът
пести време от не толкова голяма сложност нагоре. За 64 клетковите cpld-та и за
това 128 по-скоро ще ми загуби време, то поялник там няма да играе (и не е играл
с ония 64-битовите). Ама пак има симулатор, де - на органична основа, гледащ
в екрана... :-) .

То на тая платка cpld-то е най-дребното нещо, не бих го споменавал ако имах
вариант да го програмирам бит по бит на ръка без да уча разни шарени интерфейси
и идиотизми - ама не знам кой бит за кво му е. Та затова почването да подреждам
части и да пускам печки ми е бариера, бая приключение си ме очаква.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Съб Сеп 12, 2009 1:42 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
tgi написа:
... ти за съвсем откачен взе да ме броиш вече ...

определено не познавам много хора с твоя стил.
то и едно време бяхте малко, а сега съвсем изчезна конкуренцията.
но не се възгордявай чак толкова. на всеки от нас тук му хлопа по някоя дъска :-({|=


Съб Сеп 12, 2009 7:38 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни