Forum Discussion
Altera_Forum
Honored Contributor
16 years agoHere the code of the vhd file generated by the SOPC Builder for a PIO component of 8 bits. It appears that the data bus width is 8 and not 32.
library altera;
use altera.altera_europa_support_lib.all;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity led_pio is
port (
-- inputs:
signal address : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
signal chipselect : IN STD_LOGIC;
signal clk : IN STD_LOGIC;
signal reset_n : IN STD_LOGIC;
signal write_n : IN STD_LOGIC;
signal writedata : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
-- outputs:
signal out_port : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
signal readdata : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
end entity led_pio;
architecture europa of led_pio is
signal clk_en : STD_LOGIC;
signal data_out : STD_LOGIC_VECTOR (7 DOWNTO 0);
signal read_mux_out : STD_LOGIC_VECTOR (7 DOWNTO 0);
begin
clk_en <= std_logic'('1');
--s1, which is an e_avalon_slave
read_mux_out <= A_REP(to_std_logic((((std_logic_vector'("000000000000000000000000000000") & (address)) = std_logic_vector'("00000000000000000000000000000000")))), 8) AND data_out;
process (clk, reset_n)
begin
if reset_n = '0' then
data_out <= std_logic_vector'("00000000");
elsif clk'event and clk = '1' then
if std_logic'(((chipselect AND NOT write_n) AND to_std_logic((((std_logic_vector'("000000000000000000000000000000") & (address)) = std_logic_vector'("00000000000000000000000000000000")))))) = '1' then
data_out <= writedata(7 DOWNTO 0);
end if;
end if;
end process;
readdata <= read_mux_out;
out_port <= data_out;
end europa;
Jérôme