VHDL to Verilog

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Duben 19 07:33:26 CEST 2021


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




Další informace o konferenci Hw-list