problema įgyvendinant valstybinę mašiną VHDL

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;

-------------------------------------------------- -----------------------------------------

 
Przeglądarka Firefox na Androida doczekała się nowego wydania z kanału beta. Już teraz aplikację mogą pobierać wszyscy chętni ze sklepu Google Play. Najważniejszą z nowości w tej wersji programu jest odświeżony ekran startowy.

Read more...
 
Manau, kad už clk_st kodas pereina kartą, jūs gaunate 2 kartus nes pereina į kitą ciklą, valstybės apskaičiuoti, Jūs perkelia dar kartą.

Citata:

apskaičiuoti aš apskaičiuoti vertę xoring, o paskui perkelti juos
 
Pašalinti laikrodis antrojo procesas.Jis padės.
Kadangi kiekviena valstybė turi pakeisti du takto ciklą.ty, kodėl jis keičiamas du kartus.

Padaryti procesą arba Combinatorial arba nuoseklus.

 

Welcome to EDABoard.com

Sponsor

Back
Top