📄 cpu.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
entity cpu is port (
rst : in std_logic;
p12mhz : in std_logic;
--xp12mhz : out std_logic;
rst_cpu : out std_logic;
SET_TX : out std_logic;
set_rx : in std_logic;
sram_cs : out std_logic;
eeprom_cs : out std_logic;
ad : inout std_logic_vector(7 downto 0);
sa_l : out std_logic_vector(7 downto 0);
sa_h : in std_logic_vector(15 downto 8);
fight_put_out_drv : out std_logic;
allow_out_drv : out std_logic;
rd_rio_a3a : out std_logic;
open_out_drv : out std_logic;
RD_RIO_Y7B_RET : out std_logic;
rd_rio_a3b : out std_logic;
pesudo_key : in std_logic;
sd : in std_logic_vector(7 downto 0);
ior : in std_logic;
iow : in std_logic;
o_cda : out std_logic_vector(2 downto 0);
rd_ad_l : out std_logic;
rd_ad_h : out std_logic;
o_start_ad : out std_logic;
eoc_state : in std_logic;
ale : in std_logic;
sel : in std_logic;
SEL_eeprom_eprom : out std_logic;
urgency_put_opt_in : in std_logic;
ready_reset_opt_in : in std_logic;
urgency_put_opt_inx : out std_logic;
ready_reset_opt_inx : out std_logic;
conn_on0 : out std_logic;
conn_on1 : out std_logic;
conn_on2 : out std_logic;
conn_on3 : out std_logic;
torpedo_on_drv : out std_logic;
pesudo_LED_drv : out std_logic;
run_led_drv : out std_logic;
rio_led_drv : out std_logic;
ad_led_drv : out std_logic;
cpu_led_drv : out std_logic;
tube_drv : out std_logic;
AborneN28v_drv : out std_logic;
AborneP28v_drv : out std_logic;
gulock_drv : out std_logic;
cmdr_drv : out std_logic;
sddr_drv : out std_logic;
rd_pesudo_key : out std_logic;
psen : out std_logic;
psenx : in std_logic ;
txd : out std_logic;
rxd : in std_logic;
p10 : out std_logic;
p11 : out std_logic;
p12 : out std_logic;
p13 : out std_logic;
p14 : out std_logic;
p15 : out std_logic;
p16 : out std_logic;
p17 : out std_logic;
EEPROM_IOW : OUT STD_LOGIC;
EEPROM_IOR : OUT STD_LOGIC
);
end entity;
architecture cpu of cpu is
component wri_reg8 is port(
iow : in std_logic;
rst : in std_logic;
cs : in std_logic;
data_in : in std_logic_vector(7 downto 0);
data_out : out std_logic_vector(7 downto 0)
);
end component ;
component gen_1mhz is port(
p12mhz : in std_logic;
rst : in std_logic;
P1MHz : out std_logic;
p1khz : out std_logic
);
end component;
component write_reg is port(
ale : in std_logic;
ad_in : in std_logic_vector(7 downto 0);
sa_h : in std_logic_vector(15 downto 8);
iow : in std_logic;
ior : in std_logic;
rst : in std_logic;
sa_l : out std_logic_vector(7 downto 0);
----------a3 out--------------------
conn_on : out std_logic;
open_door : out std_logic;
allow : out std_logic;
fight : out std_logic;
torpedo_on : out std_logic;
-----------led out-------------------------
pesudo_LED : out std_logic;
run_led : out std_logic;
rio_led : out std_logic;
ad_led : out std_logic;
cpu_led : out std_logic;
------------y7b out---------------------------
tube : out std_logic;
naborne : out std_logic;
paborne : out std_logic;
gulock : out std_logic;
cmdr : out std_logic;
sddr : out std_logic;
----送预置控制器的显示参数-------------------------
cm_err_code : out std_logic_vector(3 downto 0);--cm出错编码
sd_err_code : out std_logic_vector(3 downto 0);--sd出错编码
--------回送方式标志位--------------
--0=正常数据回送,1=错误码回送
tc : out std_logic;
--------状态灯-----
y7b_err_led : out std_logic;
y7b_put_led : out std_logic;
y7b_ready_led : out std_logic;
-------使预置控制器的mode led闪动------------
flash_mode_led : out std_logic;--送到串行16位的第tx(7)位,到预置控制器
rst_flash_mode_led : in std_logic;--来自预置控制器串行16位的第rx(9)位
------------
flash_ready_led : out std_logic;--tx(10)='1',使ready_led 闪烁。
--使CM,SD的回送值从cm_err_code,sd_err_code取出
XT : OUT STD_LOGIC;
XT_MODE : OUT STD_lOGIC--用于CPU回送
);
end component;
component do_adc is port(
rst : in std_logic;
sa : in std_logic_vector(15 downto 0);
ad_in : in std_logic_vector(7 downto 0);
iow : in std_logic;
p12mhz : in std_logic;
cda : out std_logic_vector(2 downto 0);
eoc_state : in std_logic;
sd : in std_logic_vector(7 downto 0);
rd_adl : out std_logic;
rd_adh : out std_logic;
start_ad : out std_logic;
--ad 转换状态。00=转换结束;11=转换超时。
adc_state : out std_logic_vector(7 downto 0);
lchk_level : out std_logic_vector(1 downto 0);
p28v_level : out std_logic;
n28v_level : out std_logic;
ref5v_level : out std_logic;
cm_level : out std_logic_vector(3 downto 0);
sd_level : out std_logic_vector(2 downto 0);
x_ad_data : out std_logic_vector(11 downto 0)
);
end component;
COMPONENT read_return_pre_set is port(
rst : in std_logic;
----------来自预置控制器的参数
cm_code : out std_logic_vector(3 downto 0);
mode : out std_logic;--和方式选择
set_key : out std_logic;
sd_code : out std_logic_vector(3 downto 0);--包括sd和设定开关
--------CPU要写的数据------------------------------
cm_err_code : in std_logic_vector(3 downto 0);--cm出错编码
sd_err_code : in std_logic_vector(3 downto 0);--sd出错编码
--------回送方式标志位--------------
--0=正常数据回送,1=错误码回送
TC : in std_logic;
--------状态灯-----
y7b_err_led : in std_logic;
y7b_put_led : in std_logic;
y7b_ready_led : in std_logic;
p1mhz : in std_logic;
set_rx : in std_logic;
set_tx : out std_logic;
-------使预置控制器的mode led闪动------------
flash_mode_led : in std_logic;
rst_flash_mode_led : out std_logic;--来自预置控制器串行16位的第rx(9)位
flash_ready_led : in std_logic;--tx(10)='1',使ready_led 闪烁。
--使CM,SD的回送值从cm_err_code,sd_err_code取出
XT : IN STD_LOGIC;
XT_MODE : IN STD_lOGIC--用于CPU回送
);
END COMPONENT;
COMPONENT time_out is port (
rst : in std_logic;
sa : in std_logic_vector(15 downto 0);
iow : in std_logic;
ad_in : in std_logic_vector(7 downto 0);
p1khz : in std_logic;
y7b_time_out_tag : out std_logic_vector(7 downto 0);
sec1_time_out_tag : out std_logic_vector(7 downto 0)
);
END COMPONENT;
COMPONENT generate_int is port(
rst : in std_logic;
p1mhz : in std_logic;
urgency_put_opt_in : in std_logic;
ready_reset_opt_in : in std_logic;
urgency_put_opt_inx : out std_logic;
ready_reset_opt_inx : out std_logic;
sa : in std_logic_vector(15 downto 0);
iow : in std_logic;
ad_in : in std_logic_vector(7 downto 0);
p1khz : in std_logic
);
END COMPONENT;
COMPONENT timer is port (
rst : in std_logic;
p1khz : in std_logic;
sec : out std_logic_vector(7 downto 0);
min : out std_logic_vector(7 downto 0);
hour : out std_logic_vector(7 downto 0)
);
END COMPONENT;
COMPONENT tx8 is port(
rst : in std_logic;
p1mhz : in std_logic;
sa : in std_logic_vector(15 downto 0);
ad_in : in std_logic_vector(7 downto 0);
iow : in std_logic;
tx : out std_logic;
on_tx : out std_logic
);
END COMPONENT;
COMPONENT rx8 is port(
rst : in std_logic;
p1mhz : in std_logic;
rx : in std_logic;
data_out : out std_logic_vector(7 downto 0);
rx_tag : out std_logic;
SA : in std_logic_vector(15 downto 0);
ior : in std_logic
);
END COMPONENT;
signal cs_ad_ch : std_logic;
signal ad_ch : std_logic_vector(7 downto 0);
----------------------------------------------
SIGNAL T_AD : STD_LOGIC_VECTOR(7 DOWNTO 0);
signal cs_ad_com : std_logic;
signal t_sa_l : std_logic_vector(7 downto 0);
signal t_sa : std_logic_vector(15 downto 0);
--------------------------
signal t_p1mhz : std_logic;
signal t_p1khz : std_logic;
signal t_conn_on : std_logic;
signal t_read_data : std_logic_vector(7 downto 0);
signal t_on_read : std_logic ;
---------adc opr-------
signal t_adc_state : std_logic_vector(7 downto 0);
signal t_lchk_level : std_logic_vector(1 downto 0);
signal t_p28v_level : std_logic;
signal t_n28v_level : std_logic;
signal t_ref5v_level : std_logic;
signal t_cm_level : std_logic_vector(3 downto 0);
signal t_sd_level : std_logic_vector(2 downto 0);
signal t_x_ad_data : std_logic_vector(11 downto 0);
-------------read_return_pre_set signal--------------
signal t_cm_code : std_logic_vector(3 downto 0);
signal t_mode : std_logic;--和方式选择
signal t_set_key : std_logic;
signal t_sd_code : std_logic_vector(3 downto 0);--包括sd和设定开关
--------CPU要写的数据------------------------------
signal t_cm_err_code : std_logic_vector(3 downto 0);--cm出错编码
signal t_sd_err_code : std_logic_vector(3 downto 0);--sd出错编码
--------回送方式标志位--------------
--0=正常数据回送,1=错误码回送
signal t_tc : std_logic;
--------状态灯-----
signal t_y7b_err_led : std_logic;
signal t_y7b_put_led : std_logic;
signal t_y7b_ready_led : std_logic;
----------io opr------------
signal t_open_out : std_logic;
signal t_allow_out : std_logic;
signal t_torpedo_on : std_logic;
signal t_gulock_drv : std_logic;
signal t_cmdr_drv : std_logic;
signal t_sddr_drv : std_logic;
------------time_out -----------------
signal t_y7b_time_out_tag : std_logic_vector(7 downto 0);
signal t_sec1_time_out_tag : std_logic_vector(7 downto 0);
-------------timer-----------------
signal t_sec : std_logic_vector(7 downto 0);
signal t_min : std_logic_vector(7 downto 0);
signal t_hour : std_logic_vector(7 downto 0);
------------------txd rxd---------------
signal t_on_tx : std_logic;
signal t_rx_data : std_logic_vector(7 downto 0);
signal t_rx_tag : std_logic;
---------------使预置控制器mode-led闪动---------------
--cpu写x"cooc",ad(0)=1,从tx(7)位发出,使mode-led闪动一次,可以被预置控制器rx(9)=1复位.
signal t_flash_mode_led : std_logic;
--来自预置控制器发送的rx(9)=1.
signal t_rst_flash_mode_led : std_logic;
-----------------------
signal t_flash_ready_led : std_logic;--tx(10)='1',使ready_led 闪烁
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -