VHDL to Verilog

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Duben 19 08:20:15 CEST 2021


Dik za info, asi nejrozumnejsi reseni bude nahradit vsude typ bit za 
std_logic, to jede dle predpokladu
Ale jak zkonvertovat bit na std_logic, na to jsem teda neprisel, 
To_Std_Logic nejde std_logic(led1) hodi chybu, ze nelze zkonvertovat nit 
na std_logic... No zustanu u verilogu, zrovna, kdyz se mi to zacalo 
libit... :D

Dne 19.04.2021 v 8:02 balu napsal(a):
> bit a std_logic su rozne typy. Pri priradovani je zrejme nutne urobit 
> konverziu. Alebo este lepsie, ak nie je explicitny dovod pouzit bit, 
> treba pouzivat signaly len rovnakeho typu (napr. std_logic a 
> std_logic_vector). Pravdepodobne nieco ako To_Std_Logic(), nikdy som 
> to osobne nepouzil.
>
> Tu je potom uzitocny diagram pre vektory 
> https://www.doulos.com/knowhow/vhdl/vhdl-vector-arithmetic-using-numeric_std/
>
>
>
> On 19/04/2021 07:33, Jaroslav Buchta wrote:
>> Ja uz teda nevim, evidentne nejde priradit bit do std_logic_vector.
>> Treba takhle to jde:
>>
>>     binout(7 downto 1) <= citac(3 downto 0) & 
>> conv_std_logic_vector(states'pos(state), 3);
>>     IF led1 = '1' THEN
>>         binout(0 downto 0) <= "1";
>>     ELSE
>>         binout(0 downto 0) <= "0";
>>     END IF;
>>
>> nebo takhle:
>>     IF led1 = '1' THEN
>>         binout(0) <= '1';
>>     ELSE
>>         binout(0) <= '0';
>>     END IF;
>> to celkem dava smysl, pole do pole nebo bit na jednu pozici
>>
>> takhle uz ne:
>>     binout(0 downto 0) <= led1;
>> Error (10476): VHDL error at nhk_15_buchta_v1.vhd(201): type of 
>> identifier "led1" does not agree with its usage as "std_logic_vector" 
>> type
>> ani
>>     binout(0) <= led1;
>> Error (10476): VHDL error at nhk_15_buchta_v1.vhd(201): type of 
>> identifier "led1" does not agree with its usage as "std_ulogic" type
>>
>> Tohle by vypadalo nadejne, to by slo asi i do spojeni  ale taky nejde
>>     binout(0 downto 0) <= "1" when (led1 = '1') else "0";
>> Error (10500): VHDL syntax error at nhk_15_buchta_v1.vhd(201) near 
>> text "when";  expecting ";"
>>
>> Asi je problem v konverzi typu bit na neco kompatibilniho se 
>> std_logic? Prece nemuze byt takovy problem pripojit nebo nastavit bit 
>> do vektoru...
>>
>> Dne 18.04.2021 v 20:24 Zdeněk Aster napsal(a):
>>>
>>> & je skladani bitu musi sedet
>>> out(7 downto 0) <= "00000" & citac(4) & citac(3) & citac(1);
>>> A podminky jsou normalne and a or....
>>>
>>>  SIGNAL tmpcitac : std_logic_vector(3 downto 0);
>>>
>>> tmpcitact  <= citac(3) & citac(2) & citac(1);
>>>
>>> led8 <= '1' when (tmpcitac=7 ) else '0';
>>> led7 <= '1' when (tmpcitac=86) else '0';
>>> ...
>>> ...
>>> nebo pokud je to "pole" bitu
>>>
>>> led(7) <= '1' when (tmpcitac=7 ) else '0';
>>> led(6) <= '1' when (tmpcitac=6 ) else '0';
>>> ...
>>>
>>>
>>> Třeba, já teda nevím přesně o co jde a jestli to má být v nějakých 
>>> hodinách. VHDL jsem dlouho neviděl,
>>> ale psal jsem v tom celkem dost....
>>> Mě přišel vždycky děsný VERILOG :-)
>>>
>>> Zdeněk Aster
>>>
>>> Dne 18.04.2021 v 18:35 Jaroslav Buchta napsal(a):
>>>> To nema byt logicka operace, ale retezeni (spojovani) bitu, 
>>>> nazyvaji ten operator concatenation, jak jsem pochopil, logicky :-D
>>>> Jak se teda odlisi bitove a logicke and, or ... jsem jeste 
>>>> nepochopil ale mam podezreni, ze nijak.
>>>> Proste potrebuju naskladat za sebe 4+3+1 bit a zobrazit na osmi 
>>>> ledkach...
>>>>
>>>> Dne 18.04.2021 v 18:26 Jindroush napsal(a):
>>>>> A vy chcete 'and' nebo '&'?
>>>>>
>>>>> On 18.04.2021 18:21, Jaroslav Buchta wrote:
>>>>>> Tak se ucim VHDL, to musel vymyslet silenec ;-)
>>>>>> Jedna vetsi nez normalni zahada...
>>>>>>
>>>>>> Mam signaly:
>>>>>>
>>>>>> binout                : OUT std_logic_vector(7 downto 0));
>>>>>>
>>>>>> SIGNAL citac : std_logic_vector(3 downto 0);
>>>>>> TYPE states IS (S0, S1, S2, S3);
>>>>>> SIGNAL state : states := S0;
>>>>>>
>>>>>> signal led1 : BIT;
>>>>>>
>>>>>> konstrukce
>>>>>> binout <= citac & conv_std_logic_vector(states'pos(state), 3) & 
>>>>>> led1;
>>>>>> hodi chybu
>>>>>> Error (10327): VHDL error at xxxx.vhd(200): can't determine 
>>>>>> definition of operator ""&"" -- found 0 possible definitions
>>>>>>
>>>>>> po zmene
>>>>>> binout <= citac & conv_std_logic_vector(states'pos(state), 3) & "1";
>>>>>> probehne analyza i synteza OK.
>>>>>>
>>>>>> Blbe neco vidim, nebo v cem muze byt problem? uz zkousim vsechno 
>>>>>> mozne asi hodinu, ty slozitejsi konverze asi problem nedelaji 
>>>>>> kdyz to jde s konstantnim bitem??? 
>>>>>
>>>>
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list