Инициализиране един регистър, без да използвате нулиране

S

sudhirkv

Guest
Здравейте приятели, искам да се инициализира регистър без помощта на рестартиране. Как е възможно. проблема ми е, не мога да се използва за нулиране, освен ако този сигнал е възложено. освен ако и докато не зададете този сигнал не мога да използвам сигнал за рестартиране. Опитах се с държавната машина, където, ако искам да присвоите IDLE състояние и трябва да има нулиране сигнал. Така че аз искам да се инициализира сигнал в движение. Има ли някакъв начин за инициализиране на регистър на FPGA. Благодаря предварително [размер = 2] [цвят = # 999999] Добавена след 1 час и 25 минути: [/ цветен] [/ размер] каква стойност ще бъде там в FPGA регистър, когато не се инициализира. можем да използваме регистър FPGA като брояч, когато не се инициализира. [Размер = 2] [цвят = # 999999] Добавено след 8 минути: [/ цветен] [/ размер] винаги @ (posedge fpga50MhzClk) започне случай (pdstate) "pdIdle: PD
 
Вашият Verilog модул е непълна. Има не вход, изход, или се регистрирате декларации. Какъв тип на FPGA използвате? Кой синтез софтуер? Повечето РРОА автоматично инициализира всички регистри до нула, но поведенчески симулатор не може да знае, че. Трябва да го видите в симулация след маршрута. Ако имате добро модерен Verilog 2001 синтез инструменти и модерен FPGA, вероятно можете да инициализирате регистър като това: [код] рег. Foo = 0 [/ код] Или като този: [код] рег. Foo; първоначален Foo = 0; [/ код]
 
Здравейте ехо. Ya но първоначалната не е synthesizable
 
използвам Lattice XP FPGA и ISP Лост Starter 6.1 Версия. Опитах се да използвам рег. Foo = 0 също. но не си на работа. има ли някакъв проблем с логиката.
 
Не работи? Вашият Verilog компилатор даде грешка синтаксис за "рег. Foo = 0"? Потърсете компилатор опция, която позволява "Verilog 2001" Подкрепа. Не мога да проверите Verilog модул, защото е непълна. Можете ли да качите целия модул "определи изявленията, и може би една пейка тест?
 
тест на модул (fpga50MhzClk, systemReset2, Пд), вход fpga50MhzClk вход systemReset2 изход PD, рег. PD рег. [09:00] resetcount1; рег. [03:00] pdstate = 4'b0001; pdIdle параметър = 4'b0001; параметър pd0Delay = 4'b0010; параметър pd1Delay = 4'b0100; параметър pd0ever = 4'b1000 Винаги @ (posedge fpga50MhzClk) започва случай (pdstate) pdIdle: PD
 
Вашият код изглежда добре, тя симулира глоба, и го синтезира глоба в Xilinx ISE (Аз не Lattice). Не забравяйте да кажете на Вашия синтез инструменти, че вашият часовник е 50 MHz, така че ще маршрута на устройство за удовлетворяване на това изискване скорост. Може би вашият хардуер има проблем, като звънене на часовника, или бъгове на захранване. systemReset2 е синхронен рестартиране, така че бъдете сигурни, че отговаря на настройка и задръжте пъти в сравнение с часовника. Ако просто вратовръзка високо, след това без притеснения. С 50 часовник MHz, PD пулс е 25 цикъла. Това е не 500 NS 350 NS. Бъдете сигурни, за да разгледа и синтезиран доклад за всякакви подозрителни предупредителни съобщения. Преформатиран модула, за да мога да го прочетете по-лесно: [код] модул върха (fpga50MhzClk, systemReset2, Пд), вход fpga50MhzClk вход systemReset2 изход PD, рег. PD; рег. [09:00] resetcount1; рег. [03:00 ] = 4'b0001; параметър pdstate pdIdle = 4'b0001; параметър pd0Delay 4'b0010 параметър pd1Delay = 4'b0100 pd0ever параметър = 4'b1000; винаги @ (posedge fpga50MhzClk) започва случай (pdstate) pdIdle: PD
 

Welcome to EDABoard.com

Sponsor

Back
Top