| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| VHDL Basics http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=1343 |
Страница 1 от 1 |
| Автор: | HCL [ Нед Ное 27, 2005 8:43 pm ] | |||||||||
| Заглавие: | VHDL Basics | |||||||||
Този език е нещо уникално. Чета едно туториалче и му се радвам. Вижте този пример:
Началните стойности са: A=1, B=1, C=1, D=1, E=1 сега променяме D=2 и след едно завъртане на процеса имаме нови стойности: A=3, B=2, C=1, D=2, E=2 което означава, че новите стойности се изчисляват след приключването на процеса, т.е. когато стигнем end process. Звучи малко смахнато а. Да не говорим, че кодът по-горе представлява безкраен цикъл.Може би е по-правилно да се каже че тук цикли няма има процеси, които сe въртят безкрайно |
||||||||||
| Автор: | HCL [ Нед Ное 27, 2005 8:52 pm ] |
| Заглавие: | |
... мда малко се поизясниха нещата. В горния пример става въпрос за сигнали (A,B,C,D,E), при тях важи това правило, че новите стойности се присвояват след приключване на процеса. А езикът си разполага и с "нормалните" променливи при които такова забавяне не съществува. |
|
| Автор: | BrainStorm [ Нед Ное 27, 2005 8:56 pm ] |
| Заглавие: | |
Мда ... объркващото е това че всичко се изпълнява синхронно от логиката .... т.е не е като при процесорите ред по ред ... |
|
| Автор: | bateAz [ Нед Ное 27, 2005 9:00 pm ] |
| Заглавие: | |
Подобно нещо може да се направи и на практика в хардуера. Лаиците му викат "късо". В случая "късото" ти е между редовете A <= 2 и A <= D + 1. Просто се чудя как компилаторът не те е сритал в кокълчетата. Във VHDL редовете не се изпълняват последователно, а паралелно всичките. На пръв поглед звучи абсурдно, но е така. На C например описваш какво да направи процесора и той го прави последователно, щото ALU-то му е едно. В хардуера всички сигнали си се обработват едновременно и независимо един от друг, естествено , ако така си го описал. |
|
| Автор: | ToHu [ Нед Ное 27, 2005 9:03 pm ] |
| Заглавие: | |
Ами то не е точно объркващо, по скоро подвеждащо, трябва да се мисли за конкуренция на сигналите и събитията, но който се е занимавал с цифрова техника няма особенни проблеми |
|
| Автор: | HCL [ Нед Ное 27, 2005 9:18 pm ] |
| Заглавие: | |
Е сега, който се е занимавал, тепърва навлизаме в темата |
|
| Автор: | the_real_maniac [ Нед Ное 27, 2005 11:58 pm ] | ||||||||||||||||||
| Заглавие: | Re: VHDL Basics | ||||||||||||||||||
Наистина странна аритметика ,но ок: A=1 B=1 C=1 D=1 E=1 новите стойности се изчисляват след края на процеса. A <= 2; A за момента е 1 B <= A + C; C си е 1 , B след края на функцията ще е 1+1 = 2 , B e точно, C не се променя докрая = 1, точно. A <= D + 1; Ако важат и двете действия A=2 + D=1 + 1 = 4 , не 3 ? Ако важи последното дейстивие А= D=1 + 1 = 2 , не 3 ? нещо не ми се връзва E <= A * 2; Е = А=1 * 2 = 2 , E e точно Остава въпроса кога Д става 2 и как А става 3 ? |
|||||||||||||||||||
| Автор: | ToHu [ Пон Ное 28, 2005 12:06 am ] |
| Заглавие: | |
Нали правим D<=2 и тогава завъртаме процеса, от там, A=D+1=3 |
|
| Автор: | the_real_maniac [ Пон Ное 28, 2005 12:12 am ] | |||||||||
| Заглавие: | ||||||||||
Къде видя D <= каквото и да е било
Няма D <= X ??? |
||||||||||
| Автор: | HCL [ Пон Ное 28, 2005 12:16 am ] | |||||||||
| Заглавие: | ||||||||||
Самоцитирам се:
|
||||||||||
| Автор: | bateAz [ Пон Ное 28, 2005 12:49 am ] |
| Заглавие: | |
Пичова, престанете да гледате на VHDL кода като на инструкция за нещо си, която се чете ред по ред. Разбърквате редовете и както и да ги разбъркате, резултатът трябва да е един и същи. ако е различен : имате правописна грешка. |
|
| Автор: | the_real_maniac [ Пон Ное 28, 2005 1:48 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
оу ... моя грешка ... малка , но съществена. Като цяло даже от подписа ми , може да се види , че не се занимавам с CPLD-та и подобни прог. логики,но ми стана интересен самият случей и друго ... това <= за какво е небходимо, първо си помислих след като не е станд <(по-малко) значи може би сочи на кой се предава стойността , на кой от давата операнда от двете страни или в коя посока, знам ли нещо като при пренасочване на потока (someprog > somefile (for example) ). та ... ? |
|||||||||||||||||||
| Автор: | MGBY [ Пон Ное 28, 2005 10:04 am ] | |||||||||
| Заглавие: | ||||||||||
Маниак, забележи, че процеса е чувствителен към промяна на някой от двата сигнала C или D - от там идва промяната |
||||||||||
| Автор: | uglyduck [ Пон Ное 28, 2005 11:59 am ] |
| Заглавие: | |
Има разлика между знаците за присвояване "<=" и "=". Едните се наричат blocking assignments, а другите non-blocking assignments. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|