VHDL to Verilog

balu balu na k-net.fr
Pondělí Duben 19 08:26:14 CEST 2021


obidva jazyky su rovnocenne. Treba ale vediet co robit :-)

Kod sa musi pisat podla funkcie, nie podla toho ako by som to zadratoval 
s integrovanymi obvodmi a to potom zapisal vo VHDL. To je zakladny a 
najvacsi problem pre zaciatocnikov. Prestat rozmyslat v integrovanych 
obvodoch a dratoch, to nie je dobre. Inak nie je zvladnutie obidvoch 
nijak zlozite.

b.



On 19/04/2021 08:20, Jaroslav Buchta wrote:
> 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...
>>>


Další informace o konferenci Hw-list