Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

как се инициализира вектор с единици във Verilog?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5960
Страница 1 от 2

Автор:  Ники [ Нед Юли 20, 2008 4:58 pm ]
Заглавие:  как се инициализира вектор с единици във Verilog?

подобна инициализация във VHDL e :
digit <= (others => '1') ;
но за Verilog още ми е неясно как става?

Автор:  Trigger [ Пон Юли 21, 2008 8:39 pm ]
Заглавие: 

digit = n'b1;

Където: n = 1, 2, 3.... е размерноста на digit

Автор:  Ixidor [ Чет Юли 24, 2008 8:53 pm ]
Заглавие: 

Пита с единици не с единица...

Ако не се лъжа ставаше така (примерно):

reg [9:0] a;
...
a <= {10{1'b1}};

Пробвай :)

Автор:  MYXATA [ Чет Юли 24, 2008 9:52 pm ]
Заглавие:  Re: как се инициализира вектор с единици във Verilog?

Ники написа:
подобна инициализация във VHDL e :
digit <= (others => '1') ;
но за Verilog още ми е неясно как става?

Може за начало да си изясниш каво е вектор :)
защото както си го написал... ми прилича на копнато от сорс(от някой друг) без много разбиране:!:
първо дефинициите на съответния вектор -> каква му е размерността :?: не е ясно...
не е добре да ползваш съкратени записи защото можеш да се уплетеш и от друга страна не ти е читабелен сорса:!:

например:

.............
..............
--=============================================--
-- Internal signal declarations
--=============================================--
SIGNAL InitTimeOut : std_logic_vector(13 DOWNTO 0);-- те тва ти е вектора:!:
....
....
....
....
--=============================================--
-- Component Declarations
--=============================================--
COMPONENT TimeLatch
GENERIC (
N : Positive := 16
);
PORT (
Clock : IN std_logic ;
Data_In : IN std_logic_vector ((N-1) DOWNTO 0);
Load : IN std_logic ;
Reset : IN std_logic ;
Data_Out : OUT std_logic_vector ((N-1) DOWNTO 0)
);
END COMPONENT;
--=============================================--
..................
..................
..................
--=============================================--
-- MAIN BEGIN
--=============================================--
BEGIN
...................
..................
InitTimeOut <= "11111111111111"; те тва ти е инициализацията на вектора с единици:!:
................
END

сега фани една книжка по Верилог и прочети кое какво е и как се прави :!:, ма кат гледам и за вхдл требе да почетеш

Автор:  Ники [ Пет Юли 25, 2008 11:12 am ]
Заглавие:  Re: как се инициализира вектор с единици във Verilog?

MYXATA написа:
...


въпроса ми беше как се инициализират всички битове с единица, на вектор на който не се знае размерността.
Като напишеш '<=0', компилатора ти поставя нули на всички битове, без да си уточнил размерността, та попитах има ли начин като напиша нещо подобно на '<=1' компилатора сам да слага единици в съответните битове от дължината/размерността на вектора.
По моите скромни разбирания все още, от четенето на книжките във VHDL това става примерно така 'digit <= (others => '1') ; ', където дигит е примерно с 8 бита дължина, има ли подобна инициализация във Verilog?
Aко аз съм разбрал неправилно използването на 'оthers', поправи ме какво точно прави този оператор, или какво ще влезе във вектора digit oт този израз ' digit <= (others => '1') ; ' :?: :!:

Автор:  Ixidor [ Пет Юли 25, 2008 11:30 am ]
Заглавие: 

Ами значи правилно съм те разбрал. Наскоро и аз се чудех как да стане. Примерно да установиш регистър [255:0] в 1ци е доста хамалогия да пишеш A<=256'b1111.....1111;

Ixidor написа:
Ако не се лъжа ставаше така (примерно):

reg [9:0] a;
...
a <= {10{1'b1}};

Автор:  HCL [ Пет Юли 25, 2008 4:16 pm ]
Заглавие:  Re: как се инициализира вектор с единици във Verilog?

MYXATA написа:
digit <= (others => '1') ;
не е добре да ползваш съкратени записи защото можеш да се уплетеш и от друга страна не ти е читабелен сорса:!:


Ако ти е параметризуем кода, аз лично опирам много често до употребата на generics, без това не можеш да минеш.
Е,

Код:
for i in digit'range loop
digit(i) <= '1';
end loop;


cьщо вьрши работа, но си е малко хамалогия :)

Автор:  Ixidor [ Пет Юли 25, 2008 5:16 pm ]
Заглавие: 

Аз за синтезируем цикъл не съм чувал... :wink: Иначе при писане на тест бенчове е друг въпрос.


Ето и с параметризируем код:

Код:
parameter width = 20;
...
reg [width-1:0] a;
...
a <= {width{1'b1}};

Автор:  Trigger [ Пет Юли 25, 2008 11:18 pm ]
Заглавие: 

Цитат:
Пита с единици не с единица...


Моя грешка....Graziate-me

Автор:  relsys [ Съб Юли 26, 2008 12:01 am ]
Заглавие:  Re: как се инициализира вектор с единици във Verilog?

MYXATA написа:
не е добре да ползваш съкратени записи защото можеш да се уплетеш и от друга страна не ти е читабелен сорса:!:



е то и на С е така... :D :D :D :D

ама т'ва май е по щураво тъй като гледам.....

Автор:  HCL [ Съб Юли 26, 2008 9:55 pm ]
Заглавие: 

Ixidor написа:
Аз за синтезируем цикъл не съм чувал... :wink: Иначе при писане на тест бенчове е друг въпрос.


Ixidor ташак ли си правиш или използваш някой synthese tool от 80-те?

Автор:  Ники [ Пон Юли 28, 2008 10:44 am ]
Заглавие: 

@HCL
верно че и с цикъл ще стане, но много хамалогия, както ти каза.
Зор нямам, аз си инициализирам програмите по описаните в темата начини, но някак ми се стори тъпо, че липсва прост начин за инициализация с единици, след като има лесна инициализация с нули.


Ixidor
Относно циклите, това не е for(;; ) цикъла в С,тоя цикъл е точно за спестяване на хамалогията за много писане, и само указваш на компилатора да разположи/генерира съответния брой обекти/инициализации паралелно, няма последователно изпълнение.[/b]

Автор:  HCL [ Пон Юли 28, 2008 9:32 pm ]
Заглавие: 

Ники написа:
... но някак ми се стори тъпо, че липсва прост начин за инициализация с единици, след като има лесна инициализация с нули.


какво имаш предвид, дай някой пример насам.

Автор:  Ники [ Пон Юли 28, 2008 9:51 pm ]
Заглавие: 

днес опитах със следното и май си получих сам отговора на въпроса:

reg [N:0] Vector;
....

Vector <= 0 ; // за инициализация всички битове с нули

Vector <= ~0 ; // за инициализация всички битове с единици

това търсех.

Автор:  woody [ Вто Юли 29, 2008 3:02 pm ]
Заглавие: 

Тази тема се поизврати. Вектор с повтарящо се съдържание ти постнаха отдавна как се прави.

Това последното "Vector <= 0" и "Vector <= ~0" си има недостатъци:
а) ако ти трябва нещо различно от само нули и само единици си в проблем
б) според Verilog тууловете ти може да имаш и предупреждение за орязване, тъй като присвояваш 32-битова дума на най-вероятно по-къс вектор (N < 31).

Наслука.

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/