A
anushina
Guest
Hej,
Jeg har et spørgsmål om gennemførelsen af min 4-state lyssignalmetoden system (jeg har koden i VHDL).Jeg bruger Xilinx ISE Webpack 10.1 og jeg fik Spartan 3 XSA3S1000 Starter Kit bord.Jeg næsten ikke har nogen erfaring med det, kun afsluttet selvstudiet hidtil ...
Min VHDL-kode omfatter tælleren med nulstillet, FSM med 4 hedder .. når jeg går herfra, skal jeg oprette en skematisk eller der
er en måde at gennemføre koden direkte?
Tak
Ganna
Koden nedenfor:
library IEEE;
brug ieee.std_logic_1164.all;
brug ieee.std_logic_arith.all;
brug IEEE.std_logic_unsigned.all;
enhed TLC er
port (
CLK, nulstillet, sa, sb: i std_logic;
Ga, Ya, Ra, GB, yb, Rb: out std_logic
);
udgangen TLC;
architecture Behavioral af TLC er
type state_type er (a, b, c, d);
signal state_reg, state_next: state_type;
signal Pre_Q, Q: std_logic_vector (3 downto 0);
signal tælle, klar: std_logic: ='0 ';
begynd
- Problemet beskrive counter
processen (CLK, tælle, klare, reset)
begynd
if (reset ='0 ')
og derefter
Pre_Q <= "0000";
Q <= "0000";
anden
if (klar ='0 ')
og derefter
Pre_Q <= Pre_Q - Pre_Q;
elsif (CLK ='1 'og clk'event)
og derefter
if (count ='1 ')
og derefter
Pre_Q <= Pre_Q 1;
udgangen, hvis;
udgangen, hvis;
udgangen, hvis;
Q <= Pre_Q;
ende proces;- Statens register
processen (CLK, reset) begynder
if (reset ='0 ')
og derefter
state_reg <= a;
elsif (clk'event og CLK ='1 ')
og derefter
state_reg <= state_next;
udgangen, hvis;
ende proces;
- Næste tilstand logik
processen (state_reg, Q, sa, sb, reset) begynder
if (reset ='0 ')
og derefter
count <='0 ';
klar <='1 ';
udgangen, hvis;
tilfælde state_reg er
når a =>
if (sa ='1 'og sb ='0')
og derefter
state_next <= a;
count <='0 ';
elsif (sa ='0 'og sb ='1')
og derefter
count <='1 ';
if (Q = "0110")
og derefter
state_next <= b;
udgangen, hvis;
udgangen, hvis;
når b =>
if (Q = "0111")
og derefter
state_next <= c;
count <='0 ';
elsif (sa ='1 ')
og derefter
state_next <= b;
udgangen, hvis;
når c =>
if (sa ='0 'og sb ='1')
og derefter
state_next <= c;
elsif (sa ='1 'og sb ='0')
og derefter
klar <='0 ';
count <='1 ';
if (Q = "0110")
og derefter
state_next <= d;
udgangen, hvis;
udgangen, hvis;
når d =>
if (Q = "0111")
og derefter
state_next <= a;
count <='0 ';
elsif (sb ='1 ')
og derefter
state_next <= d;
udgangen, hvis;
ende sag;
ende proces;
processen (state_reg) begynder
Ga <='1 '; Ya <='0'; Ra <='0 ';
Gb <='0 '; yb <='0'; Rb <='1 ';
tilfælde state_reg er
når a =>
når b =>
Ga <='0 ';
Ya <='1 ';
når c =>
Ya <='0 ';
Ra <='1 ';
Gb <='1 ';
når d =>
Gb <='0 ';
Yb <='1 ';
ende sag;
ende proces;
udgangen Behavioral;
Jeg har et spørgsmål om gennemførelsen af min 4-state lyssignalmetoden system (jeg har koden i VHDL).Jeg bruger Xilinx ISE Webpack 10.1 og jeg fik Spartan 3 XSA3S1000 Starter Kit bord.Jeg næsten ikke har nogen erfaring med det, kun afsluttet selvstudiet hidtil ...
Min VHDL-kode omfatter tælleren med nulstillet, FSM med 4 hedder .. når jeg går herfra, skal jeg oprette en skematisk eller der
er en måde at gennemføre koden direkte?
Tak
Ganna
Koden nedenfor:
library IEEE;
brug ieee.std_logic_1164.all;
brug ieee.std_logic_arith.all;
brug IEEE.std_logic_unsigned.all;
enhed TLC er
port (
CLK, nulstillet, sa, sb: i std_logic;
Ga, Ya, Ra, GB, yb, Rb: out std_logic
);
udgangen TLC;
architecture Behavioral af TLC er
type state_type er (a, b, c, d);
signal state_reg, state_next: state_type;
signal Pre_Q, Q: std_logic_vector (3 downto 0);
signal tælle, klar: std_logic: ='0 ';
begynd
- Problemet beskrive counter
processen (CLK, tælle, klare, reset)
begynd
if (reset ='0 ')
og derefter
Pre_Q <= "0000";
Q <= "0000";
anden
if (klar ='0 ')
og derefter
Pre_Q <= Pre_Q - Pre_Q;
elsif (CLK ='1 'og clk'event)
og derefter
if (count ='1 ')
og derefter
Pre_Q <= Pre_Q 1;
udgangen, hvis;
udgangen, hvis;
udgangen, hvis;
Q <= Pre_Q;
ende proces;- Statens register
processen (CLK, reset) begynder
if (reset ='0 ')
og derefter
state_reg <= a;
elsif (clk'event og CLK ='1 ')
og derefter
state_reg <= state_next;
udgangen, hvis;
ende proces;
- Næste tilstand logik
processen (state_reg, Q, sa, sb, reset) begynder
if (reset ='0 ')
og derefter
count <='0 ';
klar <='1 ';
udgangen, hvis;
tilfælde state_reg er
når a =>
if (sa ='1 'og sb ='0')
og derefter
state_next <= a;
count <='0 ';
elsif (sa ='0 'og sb ='1')
og derefter
count <='1 ';
if (Q = "0110")
og derefter
state_next <= b;
udgangen, hvis;
udgangen, hvis;
når b =>
if (Q = "0111")
og derefter
state_next <= c;
count <='0 ';
elsif (sa ='1 ')
og derefter
state_next <= b;
udgangen, hvis;
når c =>
if (sa ='0 'og sb ='1')
og derefter
state_next <= c;
elsif (sa ='1 'og sb ='0')
og derefter
klar <='0 ';
count <='1 ';
if (Q = "0110")
og derefter
state_next <= d;
udgangen, hvis;
udgangen, hvis;
når d =>
if (Q = "0111")
og derefter
state_next <= a;
count <='0 ';
elsif (sb ='1 ')
og derefter
state_next <= d;
udgangen, hvis;
ende sag;
ende proces;
processen (state_reg) begynder
Ga <='1 '; Ya <='0'; Ra <='0 ';
Gb <='0 '; yb <='0'; Rb <='1 ';
tilfælde state_reg er
når a =>
når b =>
Ga <='0 ';
Ya <='1 ';
når c =>
Ya <='0 ';
Ra <='1 ';
Gb <='1 ';
når d =>
Gb <='0 ';
Yb <='1 ';
ende sag;
ende proces;
udgangen Behavioral;