S
s3034585
Guest
Hi guys i am mėginant įgyvendinti valstybės mašina VHDL.Aš esu tik bandant įkelti kai poslinkio registrus ir vėliau perkelti juos vėliau narėse.
Turiu 4 narių idle, Load, clk_st, apskaičiuoti.
ir neveikos būsena ir pabandyti iš naujo juos, apkrovos ir apkrovos poslinkio registrus su naujomis vertėmis.į clk_st valstybės ï jas perkelti vieną kartą ir apskaičiuoti i apskaičiuoti vertę xoring, o paskui perkelti juos.
problema, kurią aš patiria tai, kad kai jis patenka į valstybės perkelti ji perkelia registrų 2 kartus.Aš negaliu išsiaiškinti, kodėl ji naudosite šią būseną 2 kartus.
Nendryninės kas nors please help ...Aš prijungti toliau .. kodą
Thanks in advance
-------------------------------------------------- ---------------------------------------------
Architektūra Behavioral bandymo yra
-------------------------------------------------- ----------------------------
signalas C1, C2, C3: std_logic;tipo State_Type yra (Idle, apkrovos, clk_st, apskaičiuoti);
signalas Current_State, Next_State: State_Type;
-------------------------------------------------- ----------------------------
pradėti
statereg: procesas (CLK, Reset)
pradėti
jei Reset = '1 'tada
Current_State <= Idle;
elsif (clk'event ir CLK = '1 ') then
Current_State <= Next_State;
end if;
galutinio proceso;procesas (CLK, Current_State, reset)kintamasis r1_r: std_logic_vector (18 downto 0);
kintamasis r2_r: std_logic_vector (21 downto 0);
kintamasis r3_r: std_logic_vector (22 downto 0);
kintamasis empty_bit: std_logic;
kintamasis cnt: integer;
kintamasis cnt_test: integer;
kintamasis ref_bit: std_logic_vector (64-1 downto 0);
kintamasis shft_reg_r3: std_logic_vector (2 downto 0);
kintamasis shft_reg_r3_1: std_logic_vector (1 downto 0);
kintamasis shft_reg_r3_2: std_logic;
kintamasis shft_reg_r3_3: std_logic_vector (2 downto 0);
pradėti
atveju Current_State yra
kai Idle =>
r1_r: = (Kita => '0 ');
r2_r: = (Kita => '0 ');
r3_r: = (Kita => '0 ');
cnt: = 0;
empty_bit: = '0 ';
FB1 <= '0 ';
fb2 <= '0 ';
fb3 <= '0 ';
C1 <= '0 ';
C2 <= '0 ';
C3 <= '0 ';
shft_reg_r3: = (Kita => '0 ');
shft_reg_r3_1: = (Kita => '0 ');
shft_reg_r3_2: = '0 ';
shft_reg_r3_3: = (Kita => '0 ');
ref_bit: = (Kita => '0 ');
cnt_test: = 0;
jei apkrova = '1 'tada
Next_State <= load_reg;
kitas
Next_State <= idle;
end if;
kai load_reg =>
Next_State <= clk_st;
ref_bit: = nuoroda;
r1_r: = Vector_In (63 downto 45);
r2_r: = Vector_In (44 downto 23);
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
shft_reg_r3: = "00" & empty_bit - 22 bitų
shft_reg_r3_1: = '0 '& r3_r (21) - 21 bit
shft_reg_r3_2: = r3_r (20) - 20 bit
shft_reg_r3_3: = "00" & r3_r (7) - 7 bitų
cnt: = 1;
kai clk_st =>
Next_State <= apskaičiuoti;
ref_bit (Ks_Width-1 downto 0): = ref_bit (Ks_Width-2 downto 0) & "0";
- "tai yra pereina ref_bit 2 kartus ... I dont know why"
cnt_test: = cnt_test 1;
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
shft_reg_r3: = shft_reg_r3 (1 downto 0) & empty_bit - 22 bitų
shft_reg_r3_1: = shft_reg_r3_1 (0) & empty_bit - 21 bitų
shft_reg_r3_3: = shft_reg_r3_3 (1 downto 0) & r3_r (7) - 7 bitų
shft_reg_r3_2: = empty_bit - 20 bitų
C1 <= r1_r (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
;
C2 <= r2_r (10);
C3 <= r3_r (10);
cnt: = 2;kai apskaičiuoti =>
Next_State <= apskaičiuoti;
ref_bit (Ks_Width-1 downto 0): = ref_bit (Ks_Width-2 downto 0) & "0";
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
if (C3 = C1) arba (C3 = C2), tada - 2
shft_reg_r3: = shft_reg_r3 (1 downto 0) & empty_bit - 22 bitų
shft_reg_r3_1: = shft_reg_r3_1 (0) & empty_bit - 21 bitų
shft_reg_r3_3: = shft_reg_r3_3 (1 downto 0) & r3_r (7) - 7 bitų
shft_reg_r3_2: = empty_bit - 20 bitų
"vienoje particuar sąlyga bus išeiti ..."
kai kiti =>
null;
pabaigos atveju;
galutinio proceso;
-------------------------------------------------- -----------------------------------------
Turiu 4 narių idle, Load, clk_st, apskaičiuoti.
ir neveikos būsena ir pabandyti iš naujo juos, apkrovos ir apkrovos poslinkio registrus su naujomis vertėmis.į clk_st valstybės ï jas perkelti vieną kartą ir apskaičiuoti i apskaičiuoti vertę xoring, o paskui perkelti juos.
problema, kurią aš patiria tai, kad kai jis patenka į valstybės perkelti ji perkelia registrų 2 kartus.Aš negaliu išsiaiškinti, kodėl ji naudosite šią būseną 2 kartus.
Nendryninės kas nors please help ...Aš prijungti toliau .. kodą
Thanks in advance
-------------------------------------------------- ---------------------------------------------
Architektūra Behavioral bandymo yra
-------------------------------------------------- ----------------------------
signalas C1, C2, C3: std_logic;tipo State_Type yra (Idle, apkrovos, clk_st, apskaičiuoti);
signalas Current_State, Next_State: State_Type;
-------------------------------------------------- ----------------------------
pradėti
statereg: procesas (CLK, Reset)
pradėti
jei Reset = '1 'tada
Current_State <= Idle;
elsif (clk'event ir CLK = '1 ') then
Current_State <= Next_State;
end if;
galutinio proceso;procesas (CLK, Current_State, reset)kintamasis r1_r: std_logic_vector (18 downto 0);
kintamasis r2_r: std_logic_vector (21 downto 0);
kintamasis r3_r: std_logic_vector (22 downto 0);
kintamasis empty_bit: std_logic;
kintamasis cnt: integer;
kintamasis cnt_test: integer;
kintamasis ref_bit: std_logic_vector (64-1 downto 0);
kintamasis shft_reg_r3: std_logic_vector (2 downto 0);
kintamasis shft_reg_r3_1: std_logic_vector (1 downto 0);
kintamasis shft_reg_r3_2: std_logic;
kintamasis shft_reg_r3_3: std_logic_vector (2 downto 0);
pradėti
atveju Current_State yra
kai Idle =>
r1_r: = (Kita => '0 ');
r2_r: = (Kita => '0 ');
r3_r: = (Kita => '0 ');
cnt: = 0;
empty_bit: = '0 ';
FB1 <= '0 ';
fb2 <= '0 ';
fb3 <= '0 ';
C1 <= '0 ';
C2 <= '0 ';
C3 <= '0 ';
shft_reg_r3: = (Kita => '0 ');
shft_reg_r3_1: = (Kita => '0 ');
shft_reg_r3_2: = '0 ';
shft_reg_r3_3: = (Kita => '0 ');
ref_bit: = (Kita => '0 ');
cnt_test: = 0;
jei apkrova = '1 'tada
Next_State <= load_reg;
kitas
Next_State <= idle;
end if;
kai load_reg =>
Next_State <= clk_st;
ref_bit: = nuoroda;
r1_r: = Vector_In (63 downto 45);
r2_r: = Vector_In (44 downto 23);
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
shft_reg_r3: = "00" & empty_bit - 22 bitų
shft_reg_r3_1: = '0 '& r3_r (21) - 21 bit
shft_reg_r3_2: = r3_r (20) - 20 bit
shft_reg_r3_3: = "00" & r3_r (7) - 7 bitų
cnt: = 1;
kai clk_st =>
Next_State <= apskaičiuoti;
ref_bit (Ks_Width-1 downto 0): = ref_bit (Ks_Width-2 downto 0) & "0";
- "tai yra pereina ref_bit 2 kartus ... I dont know why"
cnt_test: = cnt_test 1;
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
shft_reg_r3: = shft_reg_r3 (1 downto 0) & empty_bit - 22 bitų
shft_reg_r3_1: = shft_reg_r3_1 (0) & empty_bit - 21 bitų
shft_reg_r3_3: = shft_reg_r3_3 (1 downto 0) & r3_r (7) - 7 bitų
shft_reg_r3_2: = empty_bit - 20 bitų
C1 <= r1_r (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
;
C2 <= r2_r (10);
C3 <= r3_r (10);
cnt: = 2;kai apskaičiuoti =>
Next_State <= apskaičiuoti;
ref_bit (Ks_Width-1 downto 0): = ref_bit (Ks_Width-2 downto 0) & "0";
empty_bit: = r1_r (1
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
XOR r2_r (21) xor ref_bit (Ks_Width-1);
if (C3 = C1) arba (C3 = C2), tada - 2
shft_reg_r3: = shft_reg_r3 (1 downto 0) & empty_bit - 22 bitų
shft_reg_r3_1: = shft_reg_r3_1 (0) & empty_bit - 21 bitų
shft_reg_r3_3: = shft_reg_r3_3 (1 downto 0) & r3_r (7) - 7 bitų
shft_reg_r3_2: = empty_bit - 20 bitų
"vienoje particuar sąlyga bus išeiti ..."
kai kiti =>
null;
pabaigos atveju;
galutinio proceso;
-------------------------------------------------- -----------------------------------------