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

📄 dfbc94567928dc8a62ce75cb7b66fb2dd347da47.svn-base

📁 FPGA与ARM EPI通信,控制16路步进电机和12路DC马达 VHDL编写的
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
	signal ram3_dina					:	std_logic_vector(15 downto 0) := ( others => '0' );
	signal ram12_addrb				:	std_logic_vector(11 downto 0) := ( others => '0' );
--sram<->read_sram----------------------------------------------------------------
	signal ram3_read					:	std_logic := '0';
	signal ram3_addrb					:	std_logic_vector(10 downto 0) := ( others => '0' );
	signal ram3_doutb					:	std_logic_vector(31 downto 0) := ( others => '0' );
--read_sram->pulse_16\pwm_12\interrupt\Coder_rst----------------------------------
	signal channel_addr				:	std_logic_vector(10 downto 0) := ( others => '0' );
--Coder_rst->Coder_detec----------------------------------------------------------
	signal coder_rst_num					:	std_logic_vector(5 downto 0) := ( others => '0' );
--interrupt->read_sram------------------------------------------------------------
	signal interrupt_for_arm_reg	:	std_logic := '0';
--others--------------------------------------------------------------------------
	signal ram_en						:	std_logic_vector(0 downto 0) := "1";
	signal ram12_ena					:	std_logic := '1';
	signal coder_a_rst				:	std_logic := '0';
	signal coder_b_rst				:	std_logic := '0';
	signal coder_c_rst				:	std_logic := '0';
	signal coder_d_rst				:	std_logic := '0';
	signal coder_e_rst				:	std_logic := '0';
	signal coder_f_rst				:	std_logic := '0';

begin

	ram12_ena 				<= '1';
	ram_en 					<= "1";
	INTERRUPT_FOR_ARM 	<= interrupt_for_arm_reg;
	coder_a_rst 			<= coder_rst_num(0);
	coder_b_rst 			<= coder_rst_num(1);
	coder_c_rst 			<= coder_rst_num(2);
	coder_d_rst 			<= coder_rst_num(3);
	coder_e_rst 			<= coder_rst_num(4);
	coder_f_rst 			<= coder_rst_num(5);

----------------------------------------------------------------------------------
--元件例化
----------------------------------------------------------------------------------
	Inst_System_rst	:	System_rst
		port map(
					CLK			=>	CLK_25M,
--					LOCKED_OUT	=> LOCKED_OUT,
					ARM_RST		=>	ARM_RST,
					SYS_RST		=>	sys_rst
					);				
----------------------------------------------------------------------------------
	Inst_my_dcm	:	my_dcm
		port map(					CLKIN_IN				=>	CLK,
					RST_IN				=>	DCM_RST,					CLKFX_OUT			=>	CLK_100M,--					CLKIN_IBUFG_OUT	=>	,					CLK0_OUT				=>	CLK_25M,								CLK2X_OUT			=>	CLK_50M					);
											
----------------------------------------------------------------------------------
	Inst_decoding_crc_1	:	decoding_crc	
	port	map(
				CLK			=>	CLK_100M,
				RST			=>	sys_rst,
				MANCHESTER	=>	MANCHESTER_A,
				DECODE_DATA	=>	sensor_temp_a
				);
----------------------------------------------------------------------------------
	Inst_decoding_crc_2	:	decoding_crc	
	port	map(
				CLK			=>	CLK_100M,
				RST			=>	sys_rst,
				MANCHESTER	=>	MANCHESTER_B,
				DECODE_DATA	=>	sensor_temp_b
				);
----------------------------------------------------------------------------------
	Inst_decoding_crc_3	:	decoding_crc	
	port	map(
				CLK			=>	CLK_100M,
				RST			=>	sys_rst,
				MANCHESTER	=>	MANCHESTER_C,
				DECODE_DATA	=>	sensor_temp_c
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_1	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_a_rst,
				CODER_QEA		=>	CODER_QEA_A,
				CODER_QEB		=>	CODER_QEB_A,
				CODER_CNT_OUT	=>	coder_cnt_a
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_2	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_b_rst,
				CODER_QEA		=>	CODER_QEA_B,
				CODER_QEB		=>	CODER_QEB_B,
				CODER_CNT_OUT	=>	coder_cnt_b
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_3	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_c_rst,
				CODER_QEA		=>	CODER_QEA_C,
				CODER_QEB		=>	CODER_QEB_C,
				CODER_CNT_OUT	=>	coder_cnt_c
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_4	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_d_rst,
				CODER_QEA		=>	CODER_QEA_D,
				CODER_QEB		=>	CODER_QEB_D,
				CODER_CNT_OUT	=>	coder_cnt_d
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_5	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_e_rst, 
				CODER_QEA		=>	CODER_QEA_E,
				CODER_QEB		=>	CODER_QEB_E,
				CODER_CNT_OUT	=>	coder_cnt_e
				);
----------------------------------------------------------------------------------
	Inst_Coder_detec_6	:	quad_encoder	
	port	map(
				CLK				=>	CLK_50M,
				RST				=>	sys_rst,
				CLEAR_CNT		=>	coder_f_rst,
				CODER_QEA		=>	CODER_QEA_F,
				CODER_QEB		=>	CODER_QEB_F,
				CODER_CNT_OUT	=>	coder_cnt_f
				);
----------------------------------------------------------------------------------
	Inst_Write_sensor	:	Write_sensor	
	port	map(
				CLK							=>	CLK_100M,
				RST							=>	sys_rst,
				DECODE_DATE_A				=>	sensor_temp_a,												
				DECODE_DATE_B 				=>	sensor_temp_b,												
				DECODE_DATE_C 				=>	sensor_temp_c,
				FPGA_WRITE_RAM1_ADDR		=>	ram1_write,
				FPGA_WRITE_RAM1_DATE		=>	ram1_dina
				);
----------------------------------------------------------------------------------
	Inst_Write_coder	:	Write_coder
	port	map(
				CLK							=>	CLK_100M,
				RST							=>	sys_rst,
				CODER_CNT_A					=>	coder_cnt_a,
				CODER_CNT_B					=>	coder_cnt_b,
				CODER_CNT_C					=>	coder_cnt_c,
				CODER_CNT_D 				=>	coder_cnt_d,
				CODER_CNT_E 				=>	coder_cnt_e,
				CODER_CNT_F					=>	coder_cnt_f,
				FPGA_WRITE_RAM2_ADDR		=>	ram2_write,
				FPGA_WRITE_RAM2_DATE		=>	ram2_dina
				);	
----------------------------------------------------------------------------------
	Inst_sram_1	:	sram	
	port	map(
				clka 						=> CLK_100M,				ena 						=> ram12_ena,				wea				 		=> ram_en,				addra						=> ram1_write,				dina					 	=> ram1_dina,				clkb 						=> CLK_ARM,				enb 						=> ram1_read,				addrb						=> ram12_addrb,				doutb					 	=> ram1_doutb
				);
----------------------------------------------------------------------------------	
	Inst_sram_2	:	sram	
	port	map(
				clka 						=> CLK_100M,				ena 						=> ram12_ena,				wea						=> ram_en,				addra 				 	=> ram2_write,				dina 						=> ram2_dina,				clkb 						=> CLK_ARM,				enb 						=> ram2_read,				addrb 					=> ram12_addrb,				doutb 					=> ram2_doutb
				);
----------------------------------------------------------------------------------
	Inst_sram_3	:	ram_3	
	port	map(
				clka 						=> CLK_ARM,				ena 						=> ram12_ena,				wea						=> ram3_write,
				addra					 	=> ram3_addra,				dina						=> ram3_dina,				clkb 						=> CLK_100M,				enb 						=> ram3_read,
				addrb					 	=> ram3_addrb,				doutb						=> ram3_doutb
				);		
----------------------------------------------------------------------------------	
	Inst_ARM_EPI	:	ARM_EPI	
	port	map(
				CLK						=>	CLK_ARM,
				ARM_FRAME				=>	ARM_FRAME,
				ARM_WRITE				=>	ARM_WRITE,
				ARM_READ					=>	ARM_READ,
				ARM_ADDR					=>	ARM_ADDR,
				SENSOR_DATA				=>	ram1_doutb,
				CODER_DATA				=>	ram2_doutb,
				RAM3_WEA					=>	ram3_write,
				RAM1_ENB					=>	ram1_read,
				RAM2_ENB					=>	ram2_read,
				RAM3_DINA				=>	ram3_dina,
				RAM3_ADDRA				=>	ram3_addra,
				RAM12_ADDRA				=>	ram12_addrb,
				ARM_FPGA_DATA			=>	ARM_FPGA_DATA
				);		
----------------------------------------------------------------------------------
	Inst_read_ram	:	read_ram3	
	port	map(
				CLK							=>	CLK_100M,
--				RST							=> sys_rst,
				RAM3_RD_START				=>	ARM_WRITE_OVER,
				RAM3_ENB						=>	ram3_read,
				RAM3_ADDRB					=>	ram3_addrb,
				RAM3_ADDRB_REG				=>	channel_addr
				);
----------------------------------------------------------------------------------	
	Inst_Coder_rst	:	Coder_rst	
	port	map(
				CLK						=>	CLK_100M,
				RST						=>	sys_rst,
				CHANNEL_ADDR			=>	channel_addr,
				CODER_RST_DATA_IN		=>	ram3_doutb,
				CODER_RST_DATA_OUT	=>	coder_rst_num
				);
----------------------------------------------------------------------------------		
	Inst_interrupt	:	interrupt	
	port	map(
				CLK						=>	CLK_25M,
				RST						=>	sys_rst,
				INTERRUPT_OUT			=>	interrupt_for_arm_reg
				);
----------------------------------------------------------------------------------
	Inst_pwm_12	:	pwm_12	
	port	map(
				CLK						=>	CLK_100M,
				RST						=>	sys_rst,
				FREQ_DUTY_DATA			=>	ram3_doutb,
				CHANNEL_ADDR			=>	channel_addr,
				DIR_POSITIVE			=>	PWM_DIR_POSITIVE,
				DIR_NEGATIVE			=>	PWM_DIR_NEGATIVE,
				PWM_OUT					=>	PWM_OUT
				);
----------------------------------------------------------------------------------
	Inst_Pulse_16	:	Pulse_16	
	port	map(
				CLK						=>	CLK_100M,
				RST						=>	sys_rst,
				INTERRUPT_IN			=>	interrupt_for_arm_reg,
				PULSE_DATA_IN			=>	ram3_doutb,
				CHANNEL_ADDR			=>	channel_addr,
				PULSE_EN					=>	PULSE_OUT_EN,
				PULSE_DIR				=>	PULSE_OUT_DIR,
				PULSE_OUT				=>	PULSE_OUT
				);
----------------------------------------------------------------------------------		

end Behavioral;								

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -