VHDL - Hjälp

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Kango
Inlägg: 21
Blev medlem: 15 september 2007, 12:43:51
Ort: Stockholm

VHDL - Hjälp

Inlägg av Kango »

Kod: Markera allt

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; -- 4 bitars SAR

entity sar4 is port(
clk_50, data, startn: in std_logic; -- startar konvertering vid startn = '0'
convc: out std_logic:='0'; -- convc visar '0' efter avslutad konvertering
dout: out std_logic:='0'; -- seriell utgång
clk: out std_logic; -- klockutgång
dig_out: out std_logic_vector(3 downto 0)); -- 4 bitars parallell utgång
end sar4;

architecture state_machine of sar4 is
              type StateType is (data0, data1, data2, data3, idle); -- 5 olika tillstånd
              signal state :StateType;
              signal slow_clk :std_logic_vector(2 downto 0);-- skalar ned klockfrekvensen 8 ggr
begin
state_shift:process(clk_50)
begin
              if rising_edge(clk_50) then
              if (slow_clk = 0) then
              case state is
when idle =>
          dout<='1';
          if (startn = '0') then
state <= data3;
dig_out<="0111";
convc<='1';
                else
state <=idle;
end if;
when data3 => dig_out(3)<=data; dig_out(2)<='0';
state <=data2;
dout<= data;

when data2 => dig_out(2)<=data; dig_out(1)<='0';
state <=data1;
dout<= data;

when data1 => dig_out(1)<=data; dig_out(0)<='0';
state <=data0;
dout<= data;

when data0 => dig_out(0)<=data;
state <=idle;
dout<= data;
convc<='0';

when others =>
state <=idle;
end case;
end if;
           slow_clk<=slow_clk+1;
           clk<=slow_clk(2);
end if;
end process state_shift;
end state_machine;
Kan någon hjälpa mig med att kommentera koden på en del ställen förstår inte så mycket av den. T.ex. skalar ned klockfrevensen 8 ggr, hur går det till? Väldigt tacksam om någon som kan VHDL förklara lite för mig.

Hälsn,,
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

slow_clk(2); plockar den 2:a biten (vilket behöver 8 ++ för att den ska ändra sig).
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

vart har du fått denna kod ifrån?
Detta är koden till ett Succesivt Approxmiationsregister (SAR) liknande 74C905. Har använt det för att skapa en Succesiv Approximations-ADC med hjälp av en FPGA i skolan.
Skriv svar