#windows #vhdl #fpga #xilinx-ise #picoblaze
Вопрос:
вот код, это код для реализации PicoBlaze на nexys4. с помощью этого кода мы хотим включать и выключать восемь светодиодов плис с помощью восьми переключателей
library IEEE; use IEEE.STD_LOGIC_1164.ALL; --use ieee.std_logic_arith.all; --use ieee.std_logic_unsigned.all; --use IEEE.NUMERIC_STD.ALL; --library UNISIM; --use UNISIM.VComponents.all; entity kcpsm6_final is Port ( clk : in STD_LOGIC; Leds : out STD_LOGIC_VECTOR (7 downto 0); sw : in STD_LOGIC_VECTOR (7 downto 0)); end kcpsm6_final; architecture Behavioral of kcpsm6_final is signal address : std_logic_vector(11 downto 0); signal instruction : std_logic_vector(17 downto 0); signal bram_enable : std_logic; signal in_port : std_logic_vector(7 downto 0); signal out_port : std_logic_vector(7 downto 0); signal port_id : std_logic_vector(7 downto 0); signal write_strobe : std_logic; signal k_write_strobe : std_logic; signal read_strobe : std_logic; signal interrupt : std_logic; signal interrupt_ack : std_logic; signal kcpsm6_sleep : std_logic; signal kcpsm6_reset : std_logic; component kcpsm6 generic( hwbuild : std_logic_vector(7 downto 0) := x"00"; interrupt_vector : std_logic_vector(11 downto 0) := x"3FF"; scratch_pad_memory_size : integer := 64); port ( address : out std_logic_vector(11 downto 0); instruction : in std_logic_vector(17 downto 0); bram_enable : out std_logic; in_port : in std_logic_vector(7 downto 0); out_port : out std_logic_vector(7 downto 0); port_id : out std_logic_vector(7 downto 0); write_strobe : out std_logic; k_write_strobe : out std_logic; read_strobe : out std_logic; interrupt : in std_logic; interrupt_ack : out std_logic; sleep : in std_logic; reset : in std_logic; clk : in std_logic); end component; component led generic( C_FAMILY : string := "S6"; C_RAM_SIZE_KWORDS : integer := 1; C_JTAG_LOADER_ENABLE : integer := 0); port ( address : in std_logic_vector(11 downto 0); instruction : out std_logic_vector(17 downto 0); enable : in std_logic; rdl : out std_logic; clk : in std_logic); end component; begin -- programming of processor program_rom: led -- name to match your psm file generic map( C_FAMILY =gt; "S6", -- family 's6', 'v6', or '7s' C_RAM_SIZE_KWORDS =gt; 1, -- program size '1', '2', or '4' C_JTAG_LOADER_ENABLE =gt; 0) -- include jtag jtag loader when set to '1' port map( address =gt; address, instruction =gt; instruction, enable =gt; bram_enable, rdl =gt; kcpsm6_reset, clk =gt; clk); -- processor processor: kcpsm6 generic map( hwbuild =gt; x"00", interrupt_vector =gt; x"3FF", scratch_pad_memory_size =gt; 64) port map( address =gt; address, instruction =gt; instruction, bram_enable =gt; bram_enable, port_id =gt; port_id, write_strobe =gt; write_strobe, k_write_strobe =gt; k_write_strobe, out_port =gt; out_port, read_strobe =gt; read_strobe, in_port =gt; in_port, interrupt =gt; interrupt, interrupt_ack =gt; interrupt_ack, sleep =gt; kcpsm6_sleep, reset =gt; kcpsm6_reset, clk =gt; clk); input_ports: process(clk) begin if clk'event and clk='1' then case port_id(0) is when '0' =gt; in_port lt;= sw;
итак, здесь у нас ошибка с символом «x», мы искали решения, но ни одно из этих решений не могло помочь нам исправить ее.
when others =gt; in_port lt;= "xxxxxxxx"; end case; end if; end process input_ports; output_ports: process(clk) begin if clk'event and clk='1' then if write_strobe = '1' then if port_id(0) = '1' then Leds lt;= out_port; end if; end if; end if; end process output_ports; end Behavioral;
я получаю следующую ошибку
ERROR:HDLCompiler:304 - "C:ProyectosVHDLPico_workkcpsm6_final.vhd" Line 126: Character 'x' is not in element type std_logic ERROR:HDLCompiler:854 - "C:ProyectosVHDLPico_workkcpsm6_final.vhd" Line 37: Unit lt;behavioralgt; ignored due to previous errors.
я не знаю, как это решить, пожалуйста, мне нужна помощь.
Комментарии:
1.
in_port
является std_logic_vector. «x» не является допустимымstd_logic
значением, я думаю, вы имеете в виду «X».2. Как хитро указывает, значения перечисления чувствительны к регистру.