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

📄 top_avr_core_sim.vhd

📁 AVR单片机的源代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
-- Timer/Countersignal sg_tc_dbusout : std_logic_vector (7 downto 0) := (others => '0');signal sg_tc_out_en  : std_logic := '0';-- Service modulesignal sg_sm_dbusout : std_logic_vector (7 downto 0) := (others => '0');signal sg_sm_out_en  : std_logic := '0';-- ###############################################################################################################-- ####################### Signals connected directly to the external multiplexer ################################signal   sg_io_port_out     : ext_mux_din_type := (others => "00000000");signal   sg_io_port_out_en  : ext_mux_en_type      := (others => '0');signal   sg_ind_irq_ack     : std_logic_vector(sg_core_irqlines'range) := (others => '0');-- ###############################################################################################################-- ********************************** External interrupts signals ********************signal sg_ext_int_req : std_logic_vector(7 downto 0) := (others => '0');-- ***********************************************************************************-- ################################## Reset signals #############################################signal sg_nrst_cp2    : std_logic :='0';-- ##############################################################################################-- Port signalssignal PortAReg : std_logic_vector(porta'range) := (others => '0');signal DDRAReg  : std_logic_vector(porta'range) := (others => '0');signal PortBReg : std_logic_vector(porta'range) := (others => '0');signal DDRBReg  : std_logic_vector(porta'range) := (others => '0');beginTESTING_CORE: component avr_core  port map(cp2      => cp2,    ireset   => ireset,cpuwait  => sg_core_cpuwait,-- PROGRAM MEMORY PORTSpc       => sg_core_pc,inst     => sg_core_inst,-- I/O REGISTERS PORTSadr      => sg_core_adr,iore     => sg_core_iore,iowe     => sg_core_iowe,-- DATA MEMORY PORTSramadr  => sg_core_ramadr,ramre   => sg_core_ramre,ramwe   => sg_core_ramwe,dbusin   => sg_core_dbusin,dbusout  => sg_core_dbusout,-- INTERRUPTS PORTirqlines => sg_core_irqlines, irqack   => sg_core_irqack,irqackad => sg_core_irqackad );RAM_Data_Register:component RAMDataReg port map(	                                  ireset      => ireset,               cp2	       => cp2,               cpuwait     => sg_core_cpuwait,			   RAMDataIn   => sg_core_dbusout,			   RAMDataOut  => sg_ram_din	                     );-- Program memoryPM:component PROM port map(               address_in => sg_core_pc,               data_out   => sg_core_inst			              );-- Data memoryDM:component DataRAM 		  generic map(RAMSize => RAMSize)	      port map(          cp2         => cp2,  	      address     => sg_core_ramadr(LOG2(RAMSize)-1 downto 0),		  ramwe		  => sg_core_ramwe,		  din         => sg_ram_din,		  dout        => sg_ram_dout);		  -- cpuwait generationcpuwait_Gen:component CPUWaitGenerator 			   generic map(InsertWaitSt => InsertWaitSt)	           port map(	           ireset  => ireset,			   cp2     => cp2,			   ramre   => sg_core_ramre,			   ramwe   => sg_core_ramwe,			   cpuwait => sg_core_cpuwait			        );					EXT_MUX:component external_mux port map(		  ramre              => sg_core_ramre,		  -- ramre output of the core		  dbus_out           => sg_core_dbusin,       -- Data input of the core 		  ram_data_out       => sg_ram_dout,          -- Data output of the RAM		  io_port_bus        => sg_io_port_out,       -- Data outputs of the I/O		  io_port_en_bus     => sg_io_port_out_en,    -- Out enable outputs of I/O		  irqack             => sg_core_irqack,		  		  irqackad			 => sg_core_irqackad,		  ind_irq_ack		 =>	sg_ind_irq_ack		  -- Individual interrupt acknolege for the peripheral                                            );-- ******************  PORTA **************************				PORTA_COMP:component pport  	generic map(PORTX_Adr => PORTA_Address,DDRX_Adr => DDRA_Address,PINX_Adr => PINA_Address)	port map(	                   -- AVR Control               ireset     => ireset,               cp2	      => cp2,                adr        => sg_core_adr,               dbus_in    => sg_core_dbusout,               dbus_out   => sg_porta_dbusout,               iore       => sg_core_iore,               iowe       => sg_core_iowe,               out_en     => sg_porta_out_en,			            -- External connection			   portx      => PortAReg,			   ddrx       => DDRAReg,			   pinx       => porta);						-- PORTA connection to the external multiplexersg_io_port_out(0) <= sg_porta_dbusout;sg_io_port_out_en(0) <= sg_porta_out_en;-- Tri-state control for PORTAPortAZCtrl:for i in porta'range generateporta(i) <= PortAReg(i) when DDRAReg(i)='1' else 'Z'; 	end generate;-- ******************  PORTB **************************		PORTB_COMP:component pport 	generic map (PORTX_Adr => PORTB_Address,DDRX_Adr => DDRB_Address,PINX_Adr => PINB_Address)	port map(	                   -- AVR Control               ireset     => ireset,               cp2	      => cp2,                adr        => sg_core_adr,               dbus_in    => sg_core_dbusout,               dbus_out   => sg_portb_dbusout,               iore       => sg_core_iore,               iowe       => sg_core_iowe,               out_en     => sg_portb_out_en,			            -- External connection			   portx      => PortBReg,			   ddrx       => DDRBReg,			   pinx       => portb);-- PORTB connection to the external multiplexersg_io_port_out(1) <= sg_portb_dbusout;sg_io_port_out_en(1) <= sg_portb_out_en;-- Tri-state control for PORTBPortBZCtrl:for i in portb'range generateportb(i) <= PortBReg(i) when DDRBReg(i)='1' else 'Z'; 	end generate;-- ************************************************-- Simple timer		  TIMER:component simple_timer port map(ireset       => ireset,cp2          => cp2,irqline      => sg_ext_int_req(0),    timer_irqack => sg_ind_irq_ack(0)                                     );sg_core_irqlines(22 downto 20) <= (others => '0');sg_core_irqlines(13 downto 10)  <= (others => '0');-- ************************UART_AVR:component uart port map(	                   -- AVR Control               ireset     => ireset,               cp2	      => cp2,               adr        => sg_core_adr,               dbus_in    => sg_core_dbusout,               dbus_out   => sg_uart_dbusout,                iore       => sg_core_iore,               iowe       => sg_core_iowe,               out_en     => sg_uart_out_en,                       --UART               rxd        => rxd,               rx_en      => sg_uart_rx_en,               txd        => txd,               tx_en      => sg_uart_tx_en,                       --IRQ               txcirq     => sg_core_irqlines(19),    -- UART TX Comleet Handler ($0028)               txc_irqack => sg_ind_irq_ack(19),               udreirq    => sg_core_irqlines(18),	-- UART Empty ($0026)			   rxcirq     => sg_core_irqlines(17)   -- UART RX Comleet Handler ($0024)                              );-- UART connection to the external multiplexer							  sg_io_port_out(2)    <= sg_uart_dbusout;sg_io_port_out_en(2) <= sg_uart_out_en;-- Timer/CounterTIM_CNT:component Timer_Counter port map(	                   -- AVR Control               ireset     => ireset,               cp2	      => cp2,               adr        => sg_core_adr,               dbus_in    => sg_core_dbusout,               dbus_out   => sg_tc_dbusout,                iore       => sg_core_iore,               iowe       => sg_core_iowe,               out_en     => sg_tc_out_en,                       --Timer/Counters               EXT1           => '0',               EXT2           => '0',			   Tosc1	      => '0',			   OC0_PWM0       => open,			   OC1A_PWM1A     => open,			   OC1B_PWM1B     => open,			   OC2_PWM2       => open,			   		   			           --IRQ               TC0OvfIRQ      => sg_core_irqlines(15),  -- Timer/Counter0 overflow ($0020)			   TC0OvfIRQ_Ack  => sg_ind_irq_ack(15),			   TC0CmpIRQ      => sg_core_irqlines(14),  -- Timer/Counter0 Compare Match ($001E)			   TC0CmpIRQ_Ack  => sg_ind_irq_ack(14),			   TC2OvfIRQ      => sg_core_irqlines(9),	-- Timer/Counter2 overflow ($0014)			   TC2OvfIRQ_Ack  => sg_ind_irq_ack(9),			   TC2CmpIRQ      => sg_core_irqlines(8),	-- Timer/Counter2 Compare Match ($0012)			   TC2CmpIRQ_Ack  => sg_ind_irq_ack(8),			   TC1OvfIRQ      => open,			   TC1OvfIRQ_Ack  => '0',			   TC1CmpAIRQ     => open,			   TC1CmpAIRQ_Ack => '0',			   TC1CmpBIRQ     => open,			   TC1CmpBIRQ_Ack => '0',			   TC1ICIRQ       => open,			   TC1ICIRQ_Ack   => '0');-- Timer/Counter connection to the external multiplexer							  sg_io_port_out(3)    <= sg_tc_dbusout;sg_io_port_out_en(3) <= sg_tc_out_en;Serv_Module:component Service_Module port map(	                   -- AVR Control               ireset         => ireset,               cp2	          => cp2,               adr            => sg_core_adr,               dbus_in        => sg_core_dbusout,               dbus_out       => sg_sm_dbusout,                iore           => sg_core_iore,               iowe           => sg_core_iowe,               out_en         => sg_sm_out_en,			        -- SLEEP mode signals			   sleep_en       => open,		   	        -- SRAM control signals			   ESRAM_en       => open,			   ESRAM_WS       => open,			   	    --IRQ               ExtInt_IRQ     => sg_core_irqlines(7 downto 0),			   ExtInt_IRQ_Ack => sg_ind_irq_ack(7 downto 4),			   			   -- External interrupts (inputs)			   Ext_Int_In     => sg_ext_int_req);-- Service module connection to the external multiplexer							  sg_io_port_out(4)    <= sg_sm_dbusout;sg_io_port_out_en(4) <= sg_sm_out_en;                  -- External interrupt inputs--sg_ext_int_req(0) <= nINT0;  -- May be uncommented only if simple_timer is disconnected from sg_ext_int_req(0)sg_ext_int_req(1) <= nINT1;sg_ext_int_req(2) <= nINT2;sg_ext_int_req(3) <= nINT3;sg_ext_int_req(4) <= INT4;sg_ext_int_req(5) <= INT5;sg_ext_int_req(6) <= INT6;sg_ext_int_req(7) <= INT7;end Struct;

⌨️ 快捷键说明

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