Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
как се инициализира вектор с единици във Verilog? 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение как се инициализира вектор с единици във Verilog?
подобна инициализация във VHDL e :
digit <= (others => '1') ;
но за Verilog още ми е неясно как става?


Нед Юли 20, 2008 4:58 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Съб Окт 22, 2005 1:18 am
Мнения: 54
Мнение 
digit = n'b1;

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

_________________
"...но мене ако питаш, стени не се разбиват с глави..."
http://www.youtube.com/watch?v=AugZsin4x1o


Пон Юли 21, 2008 8:39 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Юли 24, 2008 5:01 pm
Мнения: 7
Мнение 
Пита с единици не с единица...

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

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

Пробвай :)


Чет Юли 24, 2008 8:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 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

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

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Юли 24, 2008 9:52 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение Re: как се инициализира вектор с единици във Verilog?
MYXATA написа:
...


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


Пет Юли 25, 2008 11:12 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Юли 24, 2008 5:01 pm
Мнения: 7
Мнение 
Ами значи правилно съм те разбрал. Наскоро и аз се чудех как да стане. Примерно да установиш регистър [255:0] в 1ци е доста хамалогия да пишеш A<=256'b1111.....1111;

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

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


Пет Юли 25, 2008 11:30 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение Re: как се инициализира вектор с единици във Verilog?
MYXATA написа:
digit <= (others => '1') ;
не е добре да ползваш съкратени записи защото можеш да се уплетеш и от друга страна не ти е читабелен сорса:!:


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

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


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


Пет Юли 25, 2008 4:16 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Юли 24, 2008 5:01 pm
Мнения: 7
Мнение 
Аз за синтезируем цикъл не съм чувал... :wink: Иначе при писане на тест бенчове е друг въпрос.


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

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


Пет Юли 25, 2008 5:16 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Съб Окт 22, 2005 1:18 am
Мнения: 54
Мнение 
Цитат:
Пита с единици не с единица...


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

_________________
"...но мене ако питаш, стени не се разбиват с глави..."
http://www.youtube.com/watch?v=AugZsin4x1o


Пет Юли 25, 2008 11:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: как се инициализира вектор с единици във Verilog?
MYXATA написа:
не е добре да ползваш съкратени записи защото можеш да се уплетеш и от друга страна не ти е читабелен сорса:!:



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

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


Съб Юли 26, 2008 12:01 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Ixidor написа:
Аз за синтезируем цикъл не съм чувал... :wink: Иначе при писане на тест бенчове е друг въпрос.


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


Съб Юли 26, 2008 9:55 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение 
@HCL
верно че и с цикъл ще стане, но много хамалогия, както ти каза.
Зор нямам, аз си инициализирам програмите по описаните в темата начини, но някак ми се стори тъпо, че липсва прост начин за инициализация с единици, след като има лесна инициализация с нули.


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


Пон Юли 28, 2008 10:44 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 1:31 pm
Мнения: 3849
Мнение 
Ники написа:
... но някак ми се стори тъпо, че липсва прост начин за инициализация с единици, след като има лесна инициализация с нули.


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


Пон Юли 28, 2008 9:32 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 30, 2004 11:19 pm
Мнения: 609
Мнение 
днес опитах със следното и май си получих сам отговора на въпроса:

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

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

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

това търсех.


Пон Юли 28, 2008 9:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Тази тема се поизврати. Вектор с повтарящо се съдържание ти постнаха отдавна как се прави.

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

Наслука.


Вто Юли 29, 2008 3:02 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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