|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:00 pm
|
Страница 1 от 1
|
[ 14 мнения ] |
|
| Автор |
Съобщение |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
 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 въртят безкрайно 
|
| Нед Ное 27, 2005 8:43 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
... мда малко се поизясниха нещата. В горния пример става въпрос за сигнали (A,B,C,D,E), при тях важи това правило, че новите стойности се присвояват след приключване на процеса. А езикът си разполага и с "нормалните" променливи при които такова забавяне не съществува.
|
| Нед Ное 27, 2005 8:52 pm |
|
 |
|
BrainStorm
Ранг: Почетен член
Регистриран на: Пон Юли 04, 2005 11:51 pm Мнения: 651 Местоположение: София
|
Мда ... объркващото е това че всичко се изпълнява синхронно от логиката .... т.е не е като при процесорите ред по ред ... 
_________________ От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?
|
| Нед Ное 27, 2005 8:56 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Подобно нещо може да се направи и на практика в хардуера. Лаиците му викат "късо". В случая "късото" ти е между редовете A <= 2 и A <= D + 1.
Просто се чудя как компилаторът не те е сритал в кокълчетата.
Във VHDL редовете не се изпълняват последователно, а паралелно всичките. На пръв поглед звучи абсурдно, но е така. На C например описваш какво да направи процесора и той го прави последователно, щото ALU-то му е едно. В хардуера всички сигнали си се обработват едновременно и независимо един от друг, естествено , ако така си го описал.
|
| Нед Ное 27, 2005 9:00 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами то не е точно объркващо, по скоро подвеждащо, трябва да се мисли за конкуренция на сигналите и събитията, но който се е занимавал с цифрова техника няма особенни проблеми 
|
| Нед Ное 27, 2005 9:03 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Е сега, който се е занимавал, тепърва навлизаме в темата 
|
| Нед Ное 27, 2005 9:18 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
 Re: VHDL Basics
 |  |  |  | HCL написа: Този език е нещо уникално. Чета едно туториалче и му се радвам. Вижте този пример: Началните стойности са: 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 въртят безкрайно  |  |  |  |  |
Наистина странна аритметика ,но ок:
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 ?
|
| Нед Ное 27, 2005 11:58 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Нали правим D<=2 и тогава завъртаме процеса, от там, A=D+1=3
|
| Пон Ное 28, 2005 12:06 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
|
| Пон Ное 28, 2005 12:12 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
|
| Пон Ное 28, 2005 12:16 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Пичова, престанете да гледате на VHDL кода като на инструкция за нещо си, която се чете ред по ред. Разбърквате редовете и както и да ги разбъркате, резултатът трябва да е един и същи. ако е различен : имате правописна грешка. 
|
| Пон Ное 28, 2005 12:49 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
оу ... моя грешка ... малка , но съществена.
Като цяло даже от подписа ми , може да се види , че не се занимавам с CPLD-та и подобни прог. логики,но ми стана интересен самият случей и друго ... това <= за какво е небходимо, първо си помислих след като не е станд <(по-малко) значи може би сочи на кой се предава стойността , на кой от давата операнда от двете страни или в коя посока, знам ли
нещо като при пренасочване на потока (someprog > somefile (for example) ).
та ... ? 
|
| Пон Ное 28, 2005 1:48 am |
|
 |
|
MGBY
Ранг: Популярен
Регистриран на: Сря Дек 22, 2004 2:56 pm Мнения: 347 Местоположение: Хасково
|
Маниак, забележи, че процеса е чувствителен към промяна на някой от двата сигнала C или D - от там идва промяната 
|
| Пон Ное 28, 2005 10:04 am |
|
 |
|
uglyduck
Ранг: Новодошъл
Регистриран на: Чет Окт 20, 2005 5:02 pm Мнения: 108
|
Има разлика между знаците за присвояване "<=" и "=". Едните се наричат blocking assignments, а другите non-blocking assignments.
|
| Пон Ное 28, 2005 11:59 am |
|
|
|
Страница 1 от 1
|
[ 14 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|