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

📄 cu.v

📁 包含跳转
💻 V
字号:
`timescale 1ns/1psmodule CU (CLE,ZLE,ALU_OP,ACLE,GR_address,GRLE,IRLE,ARLE,PCLE,PCCE,MUL1LE,MUL2LE,MUL3LLE,MUL3HLE,MULLE,DIV1LE,DIV2LE,DIVLE,QUOTLE,REMDLE,mux_C_sel,mux_DB_sel,mux_AB_sel,CS,READ,WRITE,clk,reset,C_in,Z_in,IR_in);    parameter FIRST='b00,SECOND='b01,THIRD='b10,HLT='b11;        output CLE;  reg CLE;    output ZLE;  reg ZLE;    output ACLE;  reg ACLE;    output GRLE;  reg GRLE;    output ARLE;  reg ARLE;    output IRLE;  reg IRLE;    output PCLE;  reg PCLE;    output PCCE;  reg PCCE;    output MUL1LE; reg MUL1LE;    output MUL2LE; reg MUL2LE;    output MUL3LLE;reg MUL3LLE;    output MUL3HLE;reg MUL3HLE;    output MULLE;  reg MULLE;	 output DIV1LE; reg DIV1LE;	 output DIV2LE; reg DIV2LE;	 output DIVLE;  reg DIVLE;	 output QUOTLE; reg QUOTLE;	 output REMDLE; reg REMDLE;        output[4:0] ALU_OP; reg[4:0] ALU_OP;    output[2:0] GR_address; reg[2:0] GR_address;    output[1:0] mux_C_sel;  reg[1:0] mux_C_sel;    output[2:0] mux_DB_sel; reg[2:0] mux_DB_sel;    output mux_AB_sel;      reg mux_AB_sel;    output WRITE;           reg WRITE;    output CS;              reg CS;    output READ;            reg READ;        input clk;    input reset;    input C_in;    input Z_in;    input [7:0] IR_in;        reg [1:0] state;        always @(posedge clk or negedge reset)    begin        if(!reset)        state<=FIRST;        else         begin            case(state)                FIRST:state<=SECOND;                SECOND:state<=THIRD;                THIRD:                begin                 if(IR_in[7:3]=='b01111)                state<=HLT;                else                state<=FIRST;                end                HLT:state<=HLT;            endcase        end    end   always @(state or C_in or Z_in or IR_in)    begin        CLE='b0;        ZLE='b0;        ALU_OP='b0;        ACLE='b0;        GR_address='b0;        GRLE='b0;        IRLE='b0;        ARLE='b0;        PCLE='b0;        PCCE='b0;                MUL1LE='b0;        MUL2LE='b0;        MULLE='b0;        MUL3LLE='b0;        MUL3HLE='b0;		  DIV1LE='b0;		  DIV2LE='b0;		  REMDLE='b0;		  DIVLE='b0;		  QUOTLE='b0;		  READ='b1;		  WRITE='b1;		  CS='b0;		  		          mux_C_sel='b0;        mux_DB_sel=3'b00;        mux_AB_sel='b0;                        case(state)            FIRST:            begin                mux_AB_sel='b0;                mux_DB_sel='b10;                IRLE='b1;                PCCE='b1;                READ=0;            end            SECOND:            begin             case(IR_in[7:3])            'b00000,            'b00001:                begin                    mux_AB_sel='b0;                    mux_DB_sel='b10;                    PCCE='b1;                    ARLE='b1;                    READ=0;                end                                                    'b00010:                    begin                        GR_address=IR_in[2:0];                        ALU_OP=IR_in[7:3];                        mux_DB_sel='b01;                        GRLE='b1;                        CLE='b1;                        ZLE='b1;                        CS=1;                    end                                                    'b00011,            'b00100,            'b00101,            'b00110,            'b00111,            'b01000,            'b01001,            'b01010,            'b01011:                    begin                        GR_address=IR_in[2:0];                        ALU_OP=IR_in[7:3];                        mux_DB_sel='b01;                        ACLE='b1;                        CLE='b1;                        ZLE='b1;                        CS=1;                                                if(IR_in[7:3]=='b01010)                          mux_C_sel='b10;                        if(IR_in[7:3]=='b01011)                          mux_C_sel='b01;                      end                                                            'b01100,                'b01101,                'b01110:                      begin                          mux_AB_sel='b0;                          mux_DB_sel='b10;                          READ=0;                          case(IR_in[4:3])                              'b00:PCLE='b1;                              'b01:begin PCLE=!Z_in;PCCE='b1;end                              'b10:begin PCLE=!C_in;PCCE='b1;end                          endcase                      end                'b10000,                'b10001:                begin                    ARLE=1;                    mux_AB_sel=0;                    mux_DB_sel=3'b010;                    PCCE=1;                    READ=0;                end                'b10010:                begin                    MULLE='b1;                    MUL3LLE='b1;                    MUL3HLE='b1;                end                'b10011,                'b10100,					 'b10101,					 'b10110,					 'b11000,					 'b11001:		          begin                    ARLE=1;                    mux_DB_sel='b010;                    mux_AB_sel=0;                    PCCE=1;                    READ=0;                                    end					 'b10111:					 begin					     DIVLE=1;						  QUOTLE=1;						  REMDLE=1;					 end                                  endcase              end                                          THIRD:              begin                  case(IR_in[7:3])                      'b00000,                      'b00001:                      begin                      mux_AB_sel='b1;                      if(!IR_in[3])                      begin                          mux_DB_sel=3'b10;                          ACLE='b1;                      end                      else begin                          mux_DB_sel=3'b000;                          WRITE='b0;                           end                       end                      'b10000,                      'b10001:                      begin                      mux_AB_sel='b1;                      READ=0;                      if(!IR_in[3])                      begin                          mux_DB_sel=3'b010;                          MUL1LE=1;                      end                      else begin                          mux_DB_sel=3'b010;                          MUL2LE=1;                            end                       end                       'b10011,                       'b10100:                       begin                           mux_AB_sel='b1;                           WRITE=0;                           if(IR_in[3])                           begin                               mux_DB_sel=3'b011;                            end                            else mux_DB_sel=3'b100;                        end								'b10101,								'b10110:								begin								    mux_AB_sel='b1;									 mux_DB_sel='b010;									 READ=0;									 									 if(IR_in[3])									 begin									    DIV1LE=1;									 end									 else DIV2LE=1;								end									                        'b11000,                        'b11001:                        begin                            mux_AB_sel=1;                                                        WRITE=0;                            if(IR_in[3])                               mux_DB_sel='b110;                            else mux_DB_sel='b101;                        end                        							                endcase              end      endcase  end  endmodule                                                                           

⌨️ 快捷键说明

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