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

📄 mc8051_struct.vhd

📁 一个8051的VHDL代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
      ov : OUT    std_logic;
      rs : OUT    std_logic_vector( 1 DOWNTO 0 );
      data_gb : INOUT  std_logic_vector( 7 DOWNTO 0 )
   );
END COMPONENT;

COMPONENT serial
   PORT (
      addr_gb : IN     std_logic_vector( 7 DOWNTO 0 );
      indirect_sel : IN     std_logic;
      int_clk : IN     std_logic;
      int_rst : IN     std_logic;
      rd_gb : IN     std_logic;
      rxd : IN     std_logic;
      wr_gb : IN     std_logic;
      acknow : OUT    std_logic;
      rxd_ctrl : OUT    std_logic;
      txd : OUT    std_logic;
      txd_ctrl : OUT    std_logic;
      data_gb : INOUT  std_logic_vector( 7 DOWNTO 0 )
   );
END COMPONENT;

COMPONENT sp
   PORT (
      dec_rd_sp : IN     std_logic;
      inc_wr_sp : IN     std_logic;
      int_clk : IN     std_logic;
      int_rst : IN     std_logic;
      acknow : INOUT  std_logic;
      addr_gb : INOUT  std_logic_vector( 7 DOWNTO 0 );
      data_gb : INOUT  std_logic_vector( 7 DOWNTO 0 );
      indirect_sel : INOUT  std_logic;
      rd_gb : INOUT  std_logic;
      wr_gb : INOUT  std_logic
   );
END COMPONENT;


-- Optional embedded configurations
--synopsys translate_off
FOR ALL : acc_reg USE ENTITY mc8051.acc_reg;
FOR ALL : b_sfr USE ENTITY mc8051.b_sfr;
FOR ALL : cpu_core USE ENTITY mc8051.cpu_core;
FOR ALL : dptr_reg USE ENTITY mc8051.dptr_reg;
FOR ALL : hi_dmem USE ENTITY mc8051.hi_dmem;
FOR ALL : inter_ctrl USE ENTITY mc8051.inter_ctrl;
FOR ALL : lo_dmem USE ENTITY mc8051.lo_dmem;
FOR ALL : osc_sm USE ENTITY mc8051.osc_sm;
FOR ALL : p0_drv USE ENTITY mc8051.p0_drv;
FOR ALL : p1_drv USE ENTITY mc8051.p1_drv;
FOR ALL : p2_drv USE ENTITY mc8051.p2_drv;
FOR ALL : p3_drv USE ENTITY mc8051.p3_drv;
FOR ALL : prog_rom USE ENTITY mc8051.prog_rom;
FOR ALL : program_ctrl USE ENTITY mc8051.program_ctrl;
FOR ALL : psw USE ENTITY mc8051.psw;
FOR ALL : serial USE ENTITY mc8051.serial;
FOR ALL : sp USE ENTITY mc8051.sp;
--synopsys translate_on

BEGIN
-- Architecture concurrent statements
-- HDL Text Block 5
int_rst <= '0' WHEN rst='0' OR rst='L' ELSE
           '1' WHEN rst='1' OR rst='H';



-- HDL Text Block 6
int_clk <= xtal1;


-- HDL Text Block 7
latch_pins <= '1' WHEN cycle_states = s1p1 ELSE '0';


-- Instance port mappings.
   acc_reg1 : acc_reg
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         wr_acc => wr_acc,
         wr_gb => wr_gb,
         acc => acc(7 downto 0),
         acknow => acknow,
         parity => parity,
         data_gb => data_gb(7 downto 0)
      );

   b_sfr1 : b_sfr
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         acknow => acknow,
         data_gb => data_gb(7 downto 0)
      );

   I1 : cpu_core
      PORT MAP (
         ac => ac,
         acc => acc(7 downto 0),
         acknow => acknow,
         cy => cy,
         int_clk => int_clk,
         int_rst => int_rst,
         ir => ir(7 downto 0),
         new_ir => new_ir,
         ov => ov,
         rs => rs(1 downto 0),
         ac_out => ac_out,
         addr_gb => addr_gb(7 downto 0),
         cmp_true => cmp_true,
         cy_out => cy_out,
         dec_rd_sp => dec_rd_sp,
         inc_wr_sp => inc_wr_sp,
         indirect_sel => indirect_sel,
         ov_out => ov_out,
         rd_gb => rd_gb,
         rd_pmem1 => rd_pmem1,
         rd_pmem2 => rd_pmem2,
         read_latch => read_latch,
         wr_acc => wr_acc,
         wr_gb => wr_gb,
         wr_out => wr_out,
         data_gb => data_gb(7 downto 0)
      );

   dptr1 : dptr_reg
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         acknow => acknow,
         dptr => dptr(15 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   hi_dmem1 : hi_dmem
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         acknow => acknow,
         data_gb => data_gb(7 downto 0)
      );

   inter_ctrl1 : inter_ctrl
      PORT MAP (
         P0 => P0(7 downto 0),
         acknow => acknow,
         cycle_states => cycle_states(3 downto 0),
         dptr => dptr(15 downto 0),
         ea_n => ea_n,
         int_clk => int_clk,
         int_rst => int_rst,
         ir => ir(7 downto 0),
         last_cycle => last_cycle,
         pdat_loc => pdat_loc(15 downto 0),
         rom_data => rom_data(7 downto 0),
         rs => rs(1 downto 0),
         addr_gb => addr_gb(7 downto 0),
         ale => ale,
         indirect_sel => indirect_sel,
         p0_addr => p0_addr(7 downto 0),
         p0_ctrl => p0_ctrl,
         p2_addr => p2_addr(7 downto 0),
         p2_ctrl => p2_ctrl,
         pdata => pdata(7 downto 0),
         psen_n => psen_n,
         rd_gb => rd_gb,
         rd_n => rd_n,
         rd_n_ctrl => rd_n_ctrl,
         rom_rd_n => rom_rd_n,
         wr_gb => wr_gb,
         wr_n => wr_n,
         wr_n_ctrl => wr_n_ctrl,
         data_gb => data_gb(7 downto 0)
      );

   lo_dmem1 : lo_dmem
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         acknow => acknow,
         data_gb => data_gb(7 downto 0)
      );

   osc : osc_sm
      PORT MAP (
         int_clk => int_clk,
         int_rst => int_rst,
         xtal1 => xtal1,
         cycle_states => cycle_states(3 downto 0),
         xtal2 => xtal2
      );

   p0_drv1 : p0_drv
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         latch_pins => latch_pins,
         p0_addr => p0_addr(7 downto 0),
         p0_ctrl => p0_ctrl,
         rd_gb => rd_gb,
         read_latch => read_latch,
         wr_gb => wr_gb,
         acknow => acknow,
         P0 => P0(7 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   p1_drv1 : p1_drv
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         latch_pins => latch_pins,
         rd_gb => rd_gb,
         read_latch => read_latch,
         wr_gb => wr_gb,
         acknow => acknow,
         P1 => P1(7 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   p2_drv1 : p2_drv
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         latch_pins => latch_pins,
         p2_addr => p2_addr(7 downto 0),
         p2_ctrl => p2_ctrl,
         rd_gb => rd_gb,
         read_latch => read_latch,
         wr_gb => wr_gb,
         acknow => acknow,
         P2 => P2(7 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   p3_drv1 : p3_drv
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         latch_pins => latch_pins,
         rd_gb => rd_gb,
         rd_n => rd_n,
         rd_n_ctrl => rd_n_ctrl,
         read_latch => read_latch,
         rxd_ctrl => rxd_ctrl,
         txd => txd,
         txd_ctrl => txd_ctrl,
         wr_gb => wr_gb,
         wr_n => wr_n,
         wr_n_ctrl => wr_n_ctrl,
         acknow => acknow,
         rxd => rxd,
         P3 => P3(7 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   I2 : prog_rom
      PORT MAP (
         int_clk => int_clk,
         int_rst => int_rst,
         p0_addr => p0_addr(7 downto 0),
         p2_addr => p2_addr(7 downto 0),
         rom_rd_n => rom_rd_n,
         rom_data => rom_data(7 downto 0)
      );

   I0 : program_ctrl
      PORT MAP (
         cmp_true => cmp_true,
         cycle_states => cycle_states(3 downto 0),
         dptr => dptr(15 downto 0),
         int_clk => int_clk,
         int_rst => int_rst,
         pdata => pdata(7 downto 0),
         rd_pmem1 => rd_pmem1,
         rd_pmem2 => rd_pmem2,
         addr_gb => addr_gb(7 downto 0),
         dec_rd_sp => dec_rd_sp,
         inc_wr_sp => inc_wr_sp,
         indirect_sel => indirect_sel,
         ir => ir(7 downto 0),
         last_cycle => last_cycle,
         new_ir => new_ir,
         pdat_loc => pdat_loc(15 downto 0),
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         acknow => acknow,
         data_gb => data_gb(7 downto 0)
      );

   psw1 : psw
      PORT MAP (
         ac_out => ac_out,
         addr_gb => addr_gb(7 downto 0),
         cy_out => cy_out,
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         ov_out => ov_out,
         parity => parity,
         rd_gb => rd_gb,
         wr_gb => wr_gb,
         wr_out => wr_out,
         ac => ac,
         acknow => acknow,
         cy => cy,
         ov => ov,
         rs => rs(1 downto 0),
         data_gb => data_gb(7 downto 0)
      );

   serial1 : serial
      PORT MAP (
         addr_gb => addr_gb(7 downto 0),
         indirect_sel => indirect_sel,
         int_clk => int_clk,
         int_rst => int_rst,
         rd_gb => rd_gb,
         rxd => rxd,
         wr_gb => wr_gb,
         acknow => acknow,
         rxd_ctrl => rxd_ctrl,
         txd => txd,
         txd_ctrl => txd_ctrl,
         data_gb => data_gb(7 downto 0)
      );

   sp1 : sp
      PORT MAP (
         dec_rd_sp => dec_rd_sp,
         inc_wr_sp => inc_wr_sp,
         int_clk => int_clk,
         int_rst => int_rst,
         acknow => acknow,
         addr_gb => addr_gb(7 downto 0),
         data_gb => data_gb(7 downto 0),
         indirect_sel => indirect_sel,
         rd_gb => rd_gb,
         wr_gb => wr_gb
      );


END struct;

⌨️ 快捷键说明

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