L
lythanhthuan
Guest
Ik ben bezig om FPGA (spartan 3) en ik besloten om een eenvoudige vorm ik VHDL-code die stuurt naar de computer van willekeurige data, dan zal proberen toe te voegen die een deel dan extra iets, maar wat ik ook doe i couldnt beheren.plzz help me
Mijn code is volgende
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />
Ik gebruikte geen pariteit en baudrate 9600.mijn board klok is 50 MHz)
Code:
IEEE bibliotheek;
IEEE.STD_LOGIC_1164.ALL gebruik;
IEEE.STD_LOGIC_ARITH.ALL gebruik;
IEEE.STD_LOGIC_UNSIGNED.ALL gebruik;UNISIM bibliotheek;
UNISIM.VComponents.all gebruik;entiteit belangrijkste is
generieke (baud: std_logic_vector (12 Spoorbreedtes 0): = "1010001011000"; - klok verdeler voor baudrate
clk_increment: std_logic_vector (12 Spoorbreedtes 0): = "0000000000001";
shift_increment: std_logic_vector (5 Spoorbreedtes 0): = "000001"
);
Port (sseg: uit std_logic_vector (3 Spoorbreedtes 0);
elkaar: van std_logic_vector (6 Spoorbreedtes 0);
tx: out std_logic;
RX: in std_logic;
CLK: in std_logic;
schakelaar: in std_logic);
Eind belangrijkste;Behavioral architectuur van de belangrijkste is
onderdeel OBUF_LVCMOS33 haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel IBUF_LVCMOS33 haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel ibufg haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel bufg haven
(I: in std_logic;
o: std_logic out);
end component;signaal s_sseg: std_logic_vector (3 Spoorbreedtes 0);
signaal s_switch: std_logic;signaal s_disp: std_logic_vector (6 Spoorbreedtes 0);
signaal s_rx, s_tx: std_logic;
signaal clk0: std_logic;
signaal baud_fixer: std_logic_vector (12 Spoorbreedtes 0): = "0000000000000";
signaal data_counter: std_logic_vector (5 Spoorbreedtes 0): = "000000";
signaal baud_generator: std_logic: = '1 ';
signaal bit_clock: std_logic;
signaal data_format: std_logic_vector (9 Spoorbreedtes 0);
signaal gegevens: std_logic_vector (7 Spoorbreedtes 0): = "01100001";
signaal data_to_send: std_logic: = '1 ';beginnensegcom: for i in het genereren van 0 tot 3
seg0: OBUF_LVCMOS33 map van de havens
(O => sseg (i),
I => s_sseg (i));
Eind genereren segcom;
switchcom: IBUF_LVCMOS33 map van de havens
(O => s_switch,
I => switch);
dispcom: for i in het genereren van 0 tot 6
disp0: OBUF_LVCMOS33 map van de havens
(O => display (i),
I => s_disp (i));
Eind genereren dispcom;
rxcom: IBUF_LVCMOS33 map van de havens
(O => s_rx,
I => rx);
txcom: OBUF_LVCMOS33 map van de havens
(O => tx,
I => s_tx);
clkcom: ibufg map van de havens
(O => clk0,
I => CLK);
bitgen: bufg map van de havens
(I => baud_generator,
o => bit_clock);s_sseg <= "1001";
s_tx <= data_to_send;
- Baud rate generator
proces (clk0)
beginnen
Als clk0 = '1 ', dan
Als baud_fixer <= dan baud
baud_fixer <= baud_fixer clk_increment;
anders
baud_fixer <= "0000000000000";
baud_generator <= niet baud_generator;
end if;
end if;
end proces;- Gegevens shifter
data_format (0) <= '0 ';
data_format (9) <= '1 ';
data_format (8 Spoorbreedtes 1) <= gegevens (7 Spoorbreedtes 0);
proces (bit_clock)
beginnen
Als s_switch = '0 ', dan
s_disp <= "0100100";
Als bit_clock = '1 'en vervolgens bit_clock'Event
Als data_counter <"001001" en vervolgens
data_to_send <= data_format (conv_integer (data_counter));
data_counter <= data_counter shift_increment;
elsif data_counter> = "001001" en data_counter <"011100" en vervolgens
data_counter <= data_counter shift_increment;
data_to_send <= data_format (9);
anders
data <= data "00000001";
data_counter <= "000001";
data_to_send <= data_format (0);
end if;
end if;
anders
data_to_send <= '1 ';
data_counter <= "000000";
s_disp <= "0111111";
end if;
Mijn code is volgende
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />
Ik gebruikte geen pariteit en baudrate 9600.mijn board klok is 50 MHz)
Code:
IEEE bibliotheek;
IEEE.STD_LOGIC_1164.ALL gebruik;
IEEE.STD_LOGIC_ARITH.ALL gebruik;
IEEE.STD_LOGIC_UNSIGNED.ALL gebruik;UNISIM bibliotheek;
UNISIM.VComponents.all gebruik;entiteit belangrijkste is
generieke (baud: std_logic_vector (12 Spoorbreedtes 0): = "1010001011000"; - klok verdeler voor baudrate
clk_increment: std_logic_vector (12 Spoorbreedtes 0): = "0000000000001";
shift_increment: std_logic_vector (5 Spoorbreedtes 0): = "000001"
);
Port (sseg: uit std_logic_vector (3 Spoorbreedtes 0);
elkaar: van std_logic_vector (6 Spoorbreedtes 0);
tx: out std_logic;
RX: in std_logic;
CLK: in std_logic;
schakelaar: in std_logic);
Eind belangrijkste;Behavioral architectuur van de belangrijkste is
onderdeel OBUF_LVCMOS33 haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel IBUF_LVCMOS33 haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel ibufg haven
(O: out std_logic;
Ik: in std_logic);
end component;
onderdeel bufg haven
(I: in std_logic;
o: std_logic out);
end component;signaal s_sseg: std_logic_vector (3 Spoorbreedtes 0);
signaal s_switch: std_logic;signaal s_disp: std_logic_vector (6 Spoorbreedtes 0);
signaal s_rx, s_tx: std_logic;
signaal clk0: std_logic;
signaal baud_fixer: std_logic_vector (12 Spoorbreedtes 0): = "0000000000000";
signaal data_counter: std_logic_vector (5 Spoorbreedtes 0): = "000000";
signaal baud_generator: std_logic: = '1 ';
signaal bit_clock: std_logic;
signaal data_format: std_logic_vector (9 Spoorbreedtes 0);
signaal gegevens: std_logic_vector (7 Spoorbreedtes 0): = "01100001";
signaal data_to_send: std_logic: = '1 ';beginnensegcom: for i in het genereren van 0 tot 3
seg0: OBUF_LVCMOS33 map van de havens
(O => sseg (i),
I => s_sseg (i));
Eind genereren segcom;
switchcom: IBUF_LVCMOS33 map van de havens
(O => s_switch,
I => switch);
dispcom: for i in het genereren van 0 tot 6
disp0: OBUF_LVCMOS33 map van de havens
(O => display (i),
I => s_disp (i));
Eind genereren dispcom;
rxcom: IBUF_LVCMOS33 map van de havens
(O => s_rx,
I => rx);
txcom: OBUF_LVCMOS33 map van de havens
(O => tx,
I => s_tx);
clkcom: ibufg map van de havens
(O => clk0,
I => CLK);
bitgen: bufg map van de havens
(I => baud_generator,
o => bit_clock);s_sseg <= "1001";
s_tx <= data_to_send;
- Baud rate generator
proces (clk0)
beginnen
Als clk0 = '1 ', dan
Als baud_fixer <= dan baud
baud_fixer <= baud_fixer clk_increment;
anders
baud_fixer <= "0000000000000";
baud_generator <= niet baud_generator;
end if;
end if;
end proces;- Gegevens shifter
data_format (0) <= '0 ';
data_format (9) <= '1 ';
data_format (8 Spoorbreedtes 1) <= gegevens (7 Spoorbreedtes 0);
proces (bit_clock)
beginnen
Als s_switch = '0 ', dan
s_disp <= "0100100";
Als bit_clock = '1 'en vervolgens bit_clock'Event
Als data_counter <"001001" en vervolgens
data_to_send <= data_format (conv_integer (data_counter));
data_counter <= data_counter shift_increment;
elsif data_counter> = "001001" en data_counter <"011100" en vervolgens
data_counter <= data_counter shift_increment;
data_to_send <= data_format (9);
anders
data <= data "00000001";
data_counter <= "000001";
data_to_send <= data_format (0);
end if;
end if;
anders
data_to_send <= '1 ';
data_counter <= "000000";
s_disp <= "0111111";
end if;