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

📄 3_10serv

📁 大型risc处理器设计源代码,这是书中的代码 基于流水线的risc cpu设计
💻
📖 第 1 页 / 共 5 页
字号:
                      end                                                        u0537
            5'b11111: begin                                                      u0538
                        if (system.CHIP.IFU.BTC.BTC_TYPE) MNE_CALL = MNE_CALL+1; u0539
                        else MNE_BT_A = MNE_BT_A+1;                              u0540
                      end                                                        u0541
            5'b00111: MNE_BF = MNE_BF+1;                                         u0542
            5'b10111: MNE_BF_A = MNE_BF_A+1;                                     u0543
          endcase                                                                u0544
          if (system.CHIP.IFU.BTC.BTC_TYPE==1'b0) begin                          u0545
            if (system.CHIP.IFU.BTC.TARGET < system.CHIP.IFU.BTC.PC) begin       u0546
              if (system.CHIP.IFU.BTC.BTC_TAKEN) Bcc_t_r = Bcc_t_r + 1;          u0547
              else Bcc_nt_r = Bcc_nt_r + 1;                                      u0548
              last_direction_forward = 1'b0;                                     u0549
              Dist = system.CHIP.IFU.BTC.PC - system.CHIP.IFU.BTC.TARGET;        u0550
              Bcc_Width = 1;                                                     u0551
            end                                                                  u0552
            else begin                                                           u0553
              if (system.CHIP.IFU.BTC.BTC_TAKEN) Bcc_t_f = Bcc_t_f + 1;          u0554
              else Bcc_nt_f = Bcc_nt_f + 1;                                      u0555
              last_direction_forward = 1'b1;                                     u0556
              Dist = system.CHIP.IFU.BTC.TARGET - system.CHIP.IFU.BTC.PC;        u0557
              Bcc_Width = 0;                                                     u0558
            end                                                                  u0559
            casez(Dist[17:0])                                                    u0560
              18'b000000000000000001 : Bcc_Width = Bcc_Width + 1;                u0561
              18'b00000000000000001? : Bcc_Width = Bcc_Width + 2;                u0562
              18'b0000000000000001?? : Bcc_Width = Bcc_Width + 3;                u0563
              18'b000000000000001??? : Bcc_Width = Bcc_Width + 4;                u0564
              18'b00000000000001???? : Bcc_Width = Bcc_Width + 5;                u0565
              18'b0000000000001????? : Bcc_Width = Bcc_Width + 6;                u0566
              18'b000000000001?????? : Bcc_Width = Bcc_Width + 7;                u0567
              18'b00000000001??????? : Bcc_Width = Bcc_Width + 8;                u0568
              18'b0000000001???????? : Bcc_Width = Bcc_Width + 9;                u0569
              18'b000000001????????? : Bcc_Width = Bcc_Width + 10;               u0570
              18'b00000001?????????? : Bcc_Width = Bcc_Width + 11;               u0571
              18'b0000001??????????? : Bcc_Width = Bcc_Width + 12;               u0572
              18'b000001???????????? : Bcc_Width = Bcc_Width + 13;               u0573
              18'b00001????????????? : Bcc_Width = Bcc_Width + 14;               u0574
              18'b0001?????????????? : Bcc_Width = Bcc_Width + 15;               u0575
              18'b001??????????????? : Bcc_Width = Bcc_Width + 16;               u0576
              18'b01???????????????? : Bcc_Width = Bcc_Width + 17;               u0577
              18'b1????????????????? : Bcc_Width = Bcc_Width + 18;               u0578
            endcase                                                              u0579
            Bcc_Cnt = Bcc_Cnt + 1;                                               u0580
            Bcc_Dist[Bcc_Width] = Bcc_Dist[Bcc_Width] + 1;                       u0581
          end                                                                    u0582
        end                                                                      u0583
                                                                                 u0584
        if (system.CHIP.WORK_WB) begin                                           u0585
          casez(I4)                                                              u0586
            32'b11101011_00000_??????????????????? : SRIS_Cnt = SRIS_Cnt + 1;    u0587
            32'h49000000                           : NOP_Cnt = NOP_Cnt + 1;      u0588
          endcase                                                                u0589
        end                                                                      u0590
                                                                                 u0591
        if (system.CHIP.WORK_WB) begin                                           u0592
          if (I4[31:24] == 8'b11111100) begin                                    u0593
            Dist = I4[18:0];                                                     u0594
            if (Dist[18]) begin                                                  u0595
              if (T4) Bcc_t_r = Bcc_t_r + 1;                                     u0596
              else Bcc_nt_r = Bcc_nt_r + 1;                                      u0597
              Dist = -Dist;                                                      u0598
              Bcc_Width = 1;                                                     u0599
            end                                                                  u0600
            else begin                                                           u0601
              if (T4) Bcc_t_f = Bcc_t_f + 1;                                     u0602
              else Bcc_nt_f = Bcc_nt_f + 1;                                      u0603
              Bcc_Width = 0;                                                     u0604
            end                                                                  u0605
            casez(Dist[17:0])                                                    u0606
              18'b000000000000000001 : Bcc_Width = Bcc_Width + 1;                u0607
              18'b00000000000000001? : Bcc_Width = Bcc_Width + 2;                u0608
              18'b0000000000000001?? : Bcc_Width = Bcc_Width + 3;                u0609
              18'b000000000000001??? : Bcc_Width = Bcc_Width + 4;                u0610
              18'b00000000000001???? : Bcc_Width = Bcc_Width + 5;                u0611
              18'b0000000000001????? : Bcc_Width = Bcc_Width + 6;                u0612
              18'b000000000001?????? : Bcc_Width = Bcc_Width + 7;                u0613
              18'b00000000001??????? : Bcc_Width = Bcc_Width + 8;                u0614
              18'b0000000001???????? : Bcc_Width = Bcc_Width + 9;                u0615
              18'b000000001????????? : Bcc_Width = Bcc_Width + 10;               u0616
              18'b00000001?????????? : Bcc_Width = Bcc_Width + 11;               u0617
              18'b0000001??????????? : Bcc_Width = Bcc_Width + 12;               u0618
              18'b000001???????????? : Bcc_Width = Bcc_Width + 13;               u0619
              18'b00001????????????? : Bcc_Width = Bcc_Width + 14;               u0620
              18'b0001?????????????? : Bcc_Width = Bcc_Width + 15;               u0621
              18'b001??????????????? : Bcc_Width = Bcc_Width + 16;               u0622
              18'b01???????????????? : Bcc_Width = Bcc_Width + 17;               u0623
              18'b1????????????????? : Bcc_Width = Bcc_Width + 18;               u0624
            endcase                                                              u0625
            Bcc_Cnt = Bcc_Cnt + 1;                                               u0626
            Bcc_Dist[Bcc_Width] = Bcc_Dist[Bcc_Width] + 1;                       u0627
          end                                                                    u0628
        end                                                                      u0629
                                                                                 u0630
        //                                                                       u0631
        // ALU                                                                   u0632
        //                                                                       u0633
        if (system.CHIP.WORK_EX) begin                                           u0634
          casez(I2[31:19])                                                       u0635
            13'b01????0??????: Ins_ALU = Ins_ALU+1;                              u0636
            13'b01????1??????: begin                                             u0637
                                 Ins_ALU = Ins_ALU+1;                            u0638
                                 Ins_Flag = Ins_Flag+1;                          u0639
                               end                                               u0640
          endcase                                                                u0641
          if ((I2[31:30] == 2'b01) && (I2[24] == 1'b0)) begin                    u0642
            Dist_ALU = I2[13:0];                                                 u0643
            if (Dist_ALU[13]) begin                                              u0644
              Dist_ALU = -Dist_ALU;                                              u0645
              ALU_Width = 1;                                                     u0646
            end                                                                  u0647
            else ALU_Width = 0;                                                  u0648
            casez(Dist_ALU[12:0])                                                u0649
              13'b0000000000001 : ALU_Width = ALU_Width + 1;                     u0650
              13'b000000000001? : ALU_Width = ALU_Width + 2;                     u0651
              13'b00000000001?? : ALU_Width = ALU_Width + 3;                     u0652
              13'b0000000001??? : ALU_Width = ALU_Width + 4;                     u0653
              13'b000000001???? : ALU_Width = ALU_Width + 5;                     u0654
              13'b00000001????? : ALU_Width = ALU_Width + 6;                     u0655
              13'b0000001?????? : ALU_Width = ALU_Width + 7;                     u0656
              13'b000001??????? : ALU_Width = ALU_Width + 8;                     u0657
              13'b00001???????? : ALU_Width = ALU_Width + 9;                     u0658
              13'b0001????????? : ALU_Width = ALU_Width + 10;                    u0659
              13'b001?????????? : ALU_Width = ALU_Width + 11;                    u0660
              13'b01??????????? : ALU_Width = ALU_Width + 12;                    u0661
              13'b1???????????? : ALU_Width = ALU_Width + 13;                    u0662
            endcase                                                              u0663
            ALU_Cnt = ALU_Cnt + 1;                                               u0664
            ALU_Imm[ALU_Width] = ALU_Imm[ALU_Width] + 1;                         u0665
          end                                                                    u0666
        end                                                                      u0667
                                                                                 u0668
        //                                                                       u0669
        // WB                                                                    u0670
        //                                                                       u0671
        if (system.CHIP.WORK_MA) begin                                           u0672
          casez(I3[31:24])                                                       u0673
            8'b0010???1: begin                                                   u0674
                          if ((I3[18:14]!=5'b0) && (I3[4:0]!=5'b0))              u0675
                            St_Cnt = St_Cnt + 1;                                 u0676
                         end                                                     u0677
          endcase                                                                u0678
          if (I3[31:30] == 2'b00) begin                                          u0679
            Ins_MA = Ins_MA + 1;                                                 u0680
            if (I3[24] == 1'b0) begin                // immediate access         u0681
              Dist_MACC = I3[13:0];                                              u0682
              if (Dist_MACC[13]) begin                                           u0683
                Dist_MACC = -Dist_MACC;                                          u0684
                MACC_Width = 1;                                                  u0685
              end                                    

⌨️ 快捷键说明

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