⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu.vhd

📁 rs422协议的通讯程序.做一些简单改动即可以移植到各种环境。
💻 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 + -