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

📄 main.vhd

📁 组成原理的大作业
💻 VHD
字号:
---------------------------------------------------------------------------
---------------------------------------------------------------------------
--组原 Group 6;
--顶层模块,即主函数MAIN;
--封装所有设计模块,包括ALU,Q_REG,RAM_REGS,SRC_OP,OUT_MUX;
----------------------------------------------------------------------------
----------------------------------------------------------------------------

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use work.componentslib.all;

entity main is

port (
		w_ctl					:	in std_logic;	--字/字节运算控制信号
        clk, rst,load			: 	in std_logic;	--寄存器控制信号:时钟,清零,加载;
        a, b 					: 	in std_logic_vector ( 3 downto 0);	--A,B口地址;
        d 						: 	in std_logic_vector ( 15 downto 0); --立即数据
        i 						: 	in std_logic_vector ( 11 downto 0);	--11位控制信号;
        c_n 					: 	in std_logic;	--最低位进位;
        ram_0,ram_7,ram_15 		: 	in std_logic;	
        qs_0,qs_7,qs_15 		: 	in std_logic;
		ram0,ram7,ram15 		: 	out std_logic;	
        qs0,qs7,qs15 			: 	out std_logic;
        y 						: 	buffer std_logic_vector ( 15 downto 0);	--运算器输出结果;
        sign, zero, ovr, c_n_8, c_n_16,c_n_32
							    : 	buffer std_logic	--结果标志位:符号,零,溢出,最高位进位;	
      );

end main;
  
architecture archmain of main is

alias dest_ctl : std_logic_vector ( 3 downto 0) is i (11 downto 8);	--输出控制信号
alias alu_ctl  : std_logic_vector (3 downto 0) is i ( 7 downto 4);	--运算功能控制信号
alias src_ctl  : std_logic_vector (3 downto 0) is i ( 3 downto 0);	--数据源控制信号
signal ad, bd, q, r, s, f1,f2 : std_logic_vector ( 15 downto 0);
signal ssign, szero, sovr, sc_n_8, sc_n_16,sc_n_32 :	std_logic;

begin 

u1 : ram_regs port map (w_ctl,clk, rst, a, b, f1, dest_ctl, ram_0,ram_7,ram_15,ram0,ram7,ram15, ad, bd);
u2 : alu port map (w_ctl,r, s, c_n, alu_ctl, f1,f2,sc_n_32,sc_n_16,sc_n_8, sovr, szero, ssign);
u3 : out_mux port map ( ad, f1, dest_ctl,y );
u4 : q_reg port map ( w_ctl,clk, rst,load, f1,f2, dest_ctl, qs_0,qs_7,qs_15,qs0,qs7,qs15, q);
u5 : src_op port map ( d, ad, bd, q, src_ctl, r, s);

process (clk)
	begin
	if clk'event and clk = '1' then
		sign <= ssign;
		zero <= szero;
		ovr  <= sovr;
		c_n_8<= sc_n_8;
		c_n_16<= sc_n_16;
		c_n_32<= sc_n_32;
	end if;
end process;
end archmain;

       

⌨️ 快捷键说明

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