--********单片机接口信号********--
data : INOUT std_logic_vector(7 DOWNTO 0); --数据地址总线,
--即单片机的P0端口
mcu_ale : IN std_logic; -- mcu的ALE 地址锁存信号
mcu_nrd : IN std_logic; -- mcu的rd
mcu_nwr : IN std_logic; -- mcu的wr
--*******外围控制器件接口*******--
dial : IN std_logic_vector(7 downto 0);
ledout : OUT std_logic_vector(7 downto 0)
-- EN : buffer std_logic_vector(1 downto 0);
-- segdata : OUT std_logic_vector(7 downto 0)
);
END MCU;
ARCHITECTURE arch OF MCU IS
attribute clock_buffer : string;
attribute clock_buffer of mcu_ale :signal is "ibuf";
attribute clock_buffer of mcu_nwr :signal is "ibuf";
SIGNAL LA: std_logic_vector(1 DOWNTO 0); --低位地址锁存信号
SIGNAL state : std_logic_vector(4 DOWNTO 0);
SIGNAL DIN : std_logic_vector(7 DOWNTO 0);--总线输入
SIGNAL DOUT : std_logic_vector(7 DOWNTO 0);--总线输出
SIGNAL REG2 : std_logic_vector(7 DOWNTO 0);--led灯状态寄存器
BEGIN
process(mcu_ale)
begin
if(mcu_ale='1')THEN
LA<=DIN(1 DOWNTO 0);
END IF;
END PROCESS;
ledout <=reg2;
DOUT<= dial WHEN LA ="00" ELSE
"11111111";
DIN <= DATA;
DATA <= DOUT WHEN mcu_nrd ='0' AND mcu_ale='0' ELSE "ZZZZZZZZ";
READ :PROCESS(mcu_nwr,rst)
BEGIN
IF rst='0' THEN
REG2<="00000000";
ELSIF mcu_nwr'EVENT AND mcu_nwr='0' THEN
CASE LA IS --- Address input
WHEN "10"=>
REG2 <= DIN;
WHEN OTHERS =>
END CASE;
END IF;
END PROCESS READ;
END arch;
//搞不清楚,,单片机的读写过程,,我的理解是从P0读入开关状态,,送往P2口..然后FPGA接收,显示LED,,可是VHDL代码中怎么会有,ALE,WR,RD,这些信号?好象又用串口....
拜托高手指点!!!
跟贴在后面