VHDL:Programmeringstips
From Robin
(Difference between revisions)
(New page: = VHDL Programmerings-tips = TableOfContents == Hvordan teste om alle bit i en std_logic_vector = '1' == {{{ if A = (A'range => '1') then ... else ... end if; }}} == Hvordan s...) |
(→'''downto''' og '''to''') |
||
(12 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
- | + | [[Category:Ressurser|{{PAGENAME}}]] | |
- | + | [[Category:Hardware utvikling|{{PAGENAME}}]] | |
- | [[ | + | [[Category:Programmering|{{PAGENAME}}]] |
+ | [[Category:VHDL|{{PAGENAME}}]] | ||
+ | = VHDL Programmeringstips = | ||
== Hvordan teste om alle bit i en std_logic_vector = '1' == | == Hvordan teste om alle bit i en std_logic_vector = '1' == | ||
- | + | ||
- | if A = (A'range => '1') then | + | if A = (A'range => '1') then |
- | + | ... | |
- | else | + | else |
- | + | ... | |
- | end if; | + | end if; |
- | + | ||
== Hvordan sette alle bit i en std_logic_vector like == | == Hvordan sette alle bit i en std_logic_vector like == | ||
- | |||
- | |||
- | A_2D <= (others=>(others => '1')); --hvis todimensjonalt array | + | A <= (others => '1'); |
- | + | ||
+ | A_2D <= (others=>(others => '1')); --hvis todimensjonalt array | ||
+ | |||
== Hvordan vente på en verdi som skal være stabil en periode == | == Hvordan vente på en verdi som skal være stabil en periode == | ||
- | + | ||
- | wait until (CLK='1' and CLK'stable(2 ns)); | + | wait until (CLK='1' and CLK'stable(2 ns)); |
- | + | ||
+ | |||
+ | == '''downto''' og '''to''' == | ||
+ | |||
+ | '''downto''' ''har høyeste bitnr som'' '''MSB''' | ||
+ | '''to''' ''har høyeste bitnr som'' '''LSB''' | ||
+ | '''Når man binder tall sammen''' med ''&'' kommer alltid '''MSB først''' | ||
+ | |||
+ | Eksempel | ||
+ | |||
+ | signal downs : std_logic_vector(7 downto 0); | ||
+ | signal ups : std_logic_vector(0 to 7); | ||
+ | |||
+ | downs <= x"05"; | ||
+ | ups <= downs; -- ups = 0x05 | ||
+ | |||
+ | downs <= x"03"; | ||
+ | ups(4 to 7) <= downs(3 downto 0); -- ups = 0x03 | ||
+ | |||
+ | ups(4 to ups'high) <= downs(3 downto 0); -- ups = 0x03 | ||
+ | |||
+ | downs <= x"E4"; | ||
+ | ups <= "0000" & downs(3 downto 0); -- ups = 0x04 | ||
+ | |||
+ | ups <= (ups'low to ups'high -4 => '1') & downs(3 downto 0); -- ups = 0xF4 | ||
+ | |||
+ | downs <= "1001" & ups(4 to 7); -- downs = 0x94 |
Current revision as of 08:32, 20 May 2008
Contents |
VHDL Programmeringstips
Hvordan teste om alle bit i en std_logic_vector = '1'
if A = (A'range => '1') then ... else ... end if;
Hvordan sette alle bit i en std_logic_vector like
A <= (others => '1'); A_2D <= (others=>(others => '1')); --hvis todimensjonalt array
Hvordan vente på en verdi som skal være stabil en periode
wait until (CLK='1' and CLK'stable(2 ns));
downto og to
downto har høyeste bitnr som MSB to har høyeste bitnr som LSB Når man binder tall sammen med & kommer alltid MSB først
Eksempel
signal downs : std_logic_vector(7 downto 0); signal ups : std_logic_vector(0 to 7);
downs <= x"05"; ups <= downs; -- ups = 0x05 downs <= x"03"; ups(4 to 7) <= downs(3 downto 0); -- ups = 0x03 ups(4 to ups'high) <= downs(3 downto 0); -- ups = 0x03 downs <= x"E4"; ups <= "0000" & downs(3 downto 0); -- ups = 0x04 ups <= (ups'low to ups'high -4 => '1') & downs(3 downto 0); -- ups = 0xF4 downs <= "1001" & ups(4 to 7); -- downs = 0x94