| Автор |
Съобщение |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
 как се инициализира вектор с единици във Verilog?
подобна инициализация във VHDL e :
digit <= (others => '1') ;
но за Verilog още ми е неясно как става?
|
| Нед Юли 20, 2008 4:58 pm |
|
 |
|
Trigger
Ранг: Минаващ
Регистриран на: Съб Окт 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 |
|
 |
|
Ixidor
Ранг: Минаващ
Регистриран на: Чет Юли 24, 2008 5:01 pm Мнения: 7
|
Пита с единици не с единица...
Ако не се лъжа ставаше така (примерно):
reg [9:0] a;
...
a <= {10{1'b1}};
Пробвай 
|
| Чет Юли 24, 2008 8:53 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
 Re: как се инициализира вектор с единици във 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?
въпроса ми беше как се инициализират всички битове с единица, на вектор на който не се знае размерността.
Като напишеш '<=0', компилатора ти поставя нули на всички битове, без да си уточнил размерността, та попитах има ли начин като напиша нещо подобно на '<=1' компилатора сам да слага единици в съответните битове от дължината/размерността на вектора.
По моите скромни разбирания все още, от четенето на книжките във VHDL това става примерно така 'digit <= (others => '1') ; ', където дигит е примерно с 8 бита дължина, има ли подобна инициализация във Verilog?
Aко аз съм разбрал неправилно използването на 'оthers', поправи ме какво точно прави този оператор, или какво ще влезе във вектора digit oт този израз ' digit <= (others => '1') ; ' 
|
| Пет Юли 25, 2008 11:12 am |
|
 |
|
Ixidor
Ранг: Минаващ
Регистриран на: Чет Юли 24, 2008 5:01 pm Мнения: 7
|
Ами значи правилно съм те разбрал. Наскоро и аз се чудех как да стане. Примерно да установиш регистър [255:0] в 1ци е доста хамалогия да пишеш A<=256'b1111.....1111;
|
| Пет Юли 25, 2008 11:30 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
 Re: как се инициализира вектор с единици във Verilog?
Ако ти е параметризуем кода, аз лично опирам много често до употребата на generics, без това не можеш да минеш.
Е,
cьщо вьрши работа, но си е малко хамалогия 
|
| Пет Юли 25, 2008 4:16 pm |
|
 |
|
Ixidor
Ранг: Минаващ
Регистриран на: Чет Юли 24, 2008 5:01 pm Мнения: 7
|
Аз за синтезируем цикъл не съм чувал...  Иначе при писане на тест бенчове е друг въпрос.
Ето и с параметризируем код:
|
| Пет Юли 25, 2008 5:16 pm |
|
 |
|
Trigger
Ранг: Минаващ
Регистриран на: Съб Окт 22, 2005 1:18 am Мнения: 54
|
Моя грешка....Graziate-me
_________________"...но мене ако питаш, стени не се разбиват с глави..."
http://www.youtube.com/watch?v=AugZsin4x1o
|
| Пет Юли 25, 2008 11:18 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
 Re: как се инициализира вектор с единици във Verilog?
|
| Съб Юли 26, 2008 12:01 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Ixidor ташак ли си правиш или използваш някой synthese tool от 80-те?
|
| Съб Юли 26, 2008 9:55 pm |
|
 |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
@HCL
верно че и с цикъл ще стане, но много хамалогия, както ти каза.
Зор нямам, аз си инициализирам програмите по описаните в темата начини, но някак ми се стори тъпо, че липсва прост начин за инициализация с единици, след като има лесна инициализация с нули.
Ixidor
Относно циклите, това не е for(;; ) цикъла в С,тоя цикъл е точно за спестяване на хамалогията за много писане, и само указваш на компилатора да разположи/генерира съответния брой обекти/инициализации паралелно, няма последователно изпълнение.[/b]
|
| Пон Юли 28, 2008 10:44 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
какво имаш предвид, дай някой пример насам.
|
| Пон Юли 28, 2008 9:32 pm |
|
 |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
днес опитах със следното и май си получих сам отговора на въпроса:
reg [N:0] Vector;
....
Vector <= 0 ; // за инициализация всички битове с нули
Vector <= ~0 ; // за инициализация всички битове с единици
това търсех.
|
| Пон Юли 28, 2008 9:51 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
Тази тема се поизврати. Вектор с повтарящо се съдържание ти постнаха отдавна как се прави.
Това последното "Vector <= 0" и "Vector <= ~0" си има недостатъци:
а) ако ти трябва нещо различно от само нули и само единици си в проблем
б) според Verilog тууловете ти може да имаш и предупреждение за орязване, тъй като присвояваш 32-битова дума на най-вероятно по-къс вектор (N < 31).
Наслука.
|
| Вто Юли 29, 2008 3:02 pm |
|
|