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

📄 pic_core.vhd

📁 一个PIC单片机内核的VHDL实现
💻 VHD
📖 第 1 页 / 共 2 页
字号:
-- means output-enable (i.e. put the value on the 3-state bus when this -- signal is high).  Refer to the other source files for the meanings of the -- other signals.-- input/output configuration of the I/O ports.SIGNAL port_a_tri : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL port_b_tri : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL port_c_tri : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL port_a_oen : STD_LOGIC;SIGNAL port_b_oen : STD_LOGIC;SIGNAL port_c_oen : STD_LOGIC;SIGNAL port_a_wen : STD_LOGIC; SIGNAL port_b_wen : STD_LOGIC; SIGNAL port_c_wen : STD_LOGIC;SIGNAL tris_a_wen : STD_LOGIC;SIGNAL tris_b_wen : STD_LOGIC;SIGNAL tris_c_wen : STD_LOGIC;SIGNAL w_wen : STD_LOGIC;SIGNAL w_a_oen : STD_LOGIC;SIGNAL w_b_oen : STD_LOGIC;SIGNAL pc_wen : STD_LOGIC;SIGNAL pc_oen : STD_LOGIC;SIGNAL pc_push : STD_LOGIC;SIGNAL pc_pop : STD_LOGIC;SIGNAL pc_load : STD_LOGIC;SIGNAL fsr_wen : STD_LOGIC;SIGNAL fsr_oen : STD_LOGIC;SIGNAL rtcc_wen : STD_LOGIC;SIGNAL rtcc_oen : STD_LOGIC;SIGNAL file_wen : STD_LOGIC;SIGNAL file_oen : STD_LOGIC;SIGNAL inst_skip : STD_LOGIC;SIGNAL imm_oen : STD_LOGIC;SIGNAL status_oen : STD_LOGIC;SIGNAL status_wen : STD_LOGIC;SIGNAL carry_wen : STD_LOGIC;SIGNAL zero_wen : STD_LOGIC;SIGNAL const_oen : STD_LOGIC;SIGNAL const_01 : STD_LOGIC;BEGIN     rom : pic_rom PORT MAP       (         addr => pic_rom_addr,         data => pic_rom_data       );    port_a_reg : reg_io PORT MAP         (           clock     => clock,           out_en    => port_a_oen,           write_en  => port_a_wen,           data_in   => bus_out,           data_out  => bus_a,           inout_sel => port_a_tri,           dataport  => port_a         );    port_b_reg : reg_io PORT MAP         (           clock     => clock,           out_en    => port_b_oen,           write_en  => port_b_wen,           data_in   => bus_out,           data_out  => bus_a,           inout_sel => port_b_tri,           dataport  => port_b         );    port_c_reg : reg_io PORT MAP         (           clock     => clock,           out_en    => port_c_oen,           write_en  => port_c_wen,           data_in   => bus_out,           data_out  => bus_a,           inout_sel => port_c_tri,           dataport  => port_c         );    working_register : reg_w PORT MAP         (           clock      => clock,           out_a_en   => w_a_oen,           out_b_en   => w_b_oen,           write_en   => w_wen,           data_in    => bus_out,           data_a_out => bus_a,           data_b_out => bus_b         );    io_conf_port_a : reg_8rst PORT MAP         (           clock     =>  clock,           reset     =>  reset,           write_en  =>  tris_a_wen,           data_in   =>  bus_out,           data_out  =>  port_a_tri         );    io_conf_port_b : reg_8rst PORT MAP         (           clock     =>  clock,           reset     =>  reset,           write_en  =>  tris_b_wen,           data_in   =>  bus_out,           data_out  =>  port_b_tri         );        io_conf_port_c : reg_8rst PORT MAP         (           clock     =>  clock,           reset     =>  reset,           write_en  =>  tris_c_wen,           data_in   =>  bus_out,           data_out  =>  port_c_tri         );        instruction_register : reg_inst PORT MAP         (           clock     =>  clock,           reset     =>  reset,           skip      =>  inst_skip,           out_en    =>  imm_oen,           inst_in   =>  pic_rom_data,           inst_out  =>  inst,           imm_out   =>  bus_b         );        fsr_register : reg_fsr PORT MAP         (           clock     =>  clock,           out_en    =>  fsr_oen,           write_en  =>  fsr_wen,           data_in   =>  bus_out,           data_out  =>  bus_a,           fsr_out   =>  fsr         );    file_address_mux : fadr_mux PORT MAP         (           inst_5     => inst(4 DOWNTO 0),           fsr        => fsr,           file_addr  => file_addr         );        register_file : reg_file PORT MAP         (           clock    =>  clock,           write_en =>  file_wen,           out_en   =>  file_oen,           address  =>  file_addr,           data_in  =>  bus_out,           data_out =>  bus_a         );    program_counter : reg_pc PORT MAP         (           clock     =>  clock,           reset     =>  reset,           out_en    =>  pc_oen,           write_en  =>  pc_wen,           data_in   =>  bus_out,           data_out  =>  bus_a,           addr_in   =>  inst(8 DOWNTO 0),           addr_out  =>  pic_rom_addr,           push      =>  pc_push,           pop       =>  pc_pop,           load      =>  pc_load         );    status_register : reg_s PORT MAP         (           clock     =>  clock,           reset     =>  reset,           out_en    =>  status_oen,           write_en  =>  status_wen,           data_in   =>  bus_out,           data_out  =>  bus_a,           carry_out =>  carry_old,           carry_in  =>  carry_new,           zero_in   =>  zero,           carry_wr  =>  carry_wen,           zero_wr   =>  zero_wen         );    constants_generator : reg_cons PORT MAP         (           out_en    => const_oen,           const_01  => const_01,           data_out  => bus_b         );    rtcc : reg_8t PORT MAP         (           clock     =>  clock,           out_en    =>  rtcc_oen,           write_en  =>  rtcc_wen,           data_in   =>  bus_out,           data_out  =>  bus_a         );        alu : pic_alu PORT MAP       (           operation  =>  alu_op,           a          =>  bus_a,           b          =>  bus_b,           q          =>  bus_out,           carry_in   =>  carry_old,           carry_out  =>  carry_new,           zero       =>  zero       );    controller : pic_ctrl PORT MAP       (         inst       =>  inst,         file_addr  =>  file_addr,         zero       =>  zero,         alu_op     =>  alu_op,         tris_a_wen =>  tris_a_wen,         tris_b_wen =>  tris_b_wen,         tris_c_wen =>  tris_c_wen,         port_a_wen =>  port_a_wen,         port_b_wen =>  port_b_wen,         port_c_wen =>  port_c_wen,         w_wen      =>  w_wen,         w_a_oen    =>  w_a_oen,         w_b_oen    =>  w_b_oen,         pc_wen     =>  pc_wen,         pc_oen     =>  pc_oen,         pc_push    =>  pc_push,         pc_pop     =>  pc_pop,         pc_load    =>  pc_load,         fsr_wen    =>  fsr_wen,         fsr_oen    =>  fsr_oen,         rtcc_wen   =>  rtcc_wen,         rtcc_oen   =>  rtcc_oen,         file_wen   =>  file_wen,         file_oen   =>  file_oen,         inst_skip  =>  inst_skip,         imm_oen    =>  imm_oen,         status_oen =>  status_oen,         status_wen =>  status_wen,         carry_wen  =>  carry_wen,         zero_wen   =>  zero_wen,         port_a_oen =>  port_a_oen,         port_b_oen =>  port_b_oen,         port_c_oen =>  port_c_oen,         const_oen  =>  const_oen,         const_01   =>  const_01       );    END structural;

⌨️ 快捷键说明

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