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

📄 3_07pcu

📁 大型risc处理器设计源代码,这是书中的代码 基于流水线的risc cpu设计
💻
📖 第 1 页 / 共 5 页
字号:
    end                                                                          f0596
                                                                                 f0597
    //                                                                           f0598
    // Hardware interrupt state for IF                                           f0599
    //                                                                           f0600
    always @(posedge CP) begin                                                   f0601
      if (STEP) begin                                                            f0602
        casez({DO_HWI, KILL_ALU, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0603
               SRIS_KSR})                                                        f0604
          7'b1??????: NEXT_HWIACT = #`DELTA 1'b1;       // HWI                   f0605
          7'b0011???: NEXT_HWIACT = #`DELTA HWISR[6];   // HWI RETI              f0606
          7'b00101??: NEXT_HWIACT = #`DELTA EXCSR[6];   // EXC RETI              f0607
          7'b001001?: NEXT_HWIACT = #`DELTA SWISR[6];   // SWI RETI              f0608
          7'b000???1: NEXT_HWIACT = #`DELTA B_BUS[6];   // SRIS SR               f0609
        endcase                                                                  f0610
      end                                                                        f0611
    end                                                                          f0612
                                                                                 f0613
    //                                                                           f0614
    // Exception state for IF                                                    f0615
    //                                                                           f0616
    always @(posedge CP) begin                                                   f0617
      if (STEP) begin                                                            f0618
        casez({KILL_ALU, DO_EXC, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0619
               SRIS_KSR})                                                        f0620
          7'b01?????: NEXT_EXCACT = #`DELTA 1'b1;       // exception             f0621
          7'b0011???: NEXT_EXCACT = #`DELTA HWISR[5];   // HWI RETI              f0622
          7'b00101??: NEXT_EXCACT = #`DELTA EXCSR[5];   // EXC RETI              f0623
          7'b001001?: NEXT_EXCACT = #`DELTA SWISR[5];   // SWI RETI              f0624
          7'b000???1: NEXT_EXCACT = #`DELTA B_BUS[5];   // SRIS SR               f0625
        endcase                                                                  f0626
      end                                                                        f0627
    end                                                                          f0628
                                                                                 f0629
    //                                                                           f0630
    // Software interrupt state for IF                                           f0631
    //                                                                           f0632
    always @(posedge CP) begin                                                   f0633
      if (STEP) begin                                                            f0634
        casez({KILL_ALU, DO_SWI, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0635
               SRIS_KSR})                                                        f0636
          7'b01?????: NEXT_SWIACT = #`DELTA 1'b1;       // SWI                   f0637
          7'b0011???: NEXT_SWIACT = #`DELTA HWISR[4];   // HWI RETI              f0638
          7'b00101??: NEXT_SWIACT = #`DELTA EXCSR[4];   // EXC RETI              f0639
          7'b001001?: NEXT_SWIACT = #`DELTA SWISR[4];   // SWI RETI              f0640
          7'b000???1: NEXT_SWIACT = #`DELTA B_BUS[4];   // SRIS SR               f0641
        endcase                                                                  f0642
      end                                                                        f0643
    end                                                                          f0644
                                                                                 f0645
  //--------------------------------------------------------------------------   f0646
  //                                                                             f0647
  // Status pipeline: IF stage                                                   f0648
  //                                                                             f0649
  // Handling of IF status bits for                                              f0650
  // KUMODE, HWI, exception, and SWI                                             f0651
  //                                                                             f0652
  //--------------------------------------------------------------------------   f0653
                                                                                 f0654
    //                                                                           f0655
    // Kernel/user mode for this IF step                                         f0656
    //                                                                           f0657
    always @(posedge CP) begin                                                   f0658
      if (STEP) begin                                                            f0659
        casez({DO_HWI, DO_PANIC, KILL_ALU, DO_EXC, DO_SWI, DO_RETI, ID_HWIACT,   f0660
               ID_EXCACT, ID_SWIACT, SRIS_KSR, (~DIS_IDU | EMERG_FETCH)})        f0661
          11'b1?????????1: IF_KUMODE = #`DELTA 1'b1;       // HWI                f0662
          11'b01????????1: IF_KUMODE = #`DELTA 1'b1;       // PANIC              f0663
          11'b0001??????1: IF_KUMODE = #`DELTA 1'b1;       // exception          f0664
          11'b00001?????1: IF_KUMODE = #`DELTA 1'b1;       // SWI                f0665
          11'b0000011???1: IF_KUMODE = #`DELTA HWISR[7];   // HWI RETI           f0666
          11'b00000101??1: IF_KUMODE = #`DELTA EXCSR[7];   // EXC RETI           f0667
          11'b000001001?1: IF_KUMODE = #`DELTA SWISR[7];   // SWI RETI           f0668
          11'b000000???1?: IF_KUMODE = #`DELTA B_BUS[7];   // SRIS SR            f0669
          11'b?????????00: IF_KUMODE = #`DELTA IF_KUMODE;  // hold state         f0670
          default:         IF_KUMODE = #`DELTA NEXT_KUMODE;                      f0671
        endcase                                                                  f0672
      end                                                                        f0673
    end                                                                          f0674
                                                                                 f0675
    //                                                                           f0676
    // Hardware interrupt state for this IF step                                 f0677
    //                                                                           f0678
    always @(posedge CP) begin                                                   f0679
      if (STEP) begin                                                            f0680
        casez({DO_HWI, KILL_ALU, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0681
               SRIS_KSR, (~DIS_IDU | EMERG_FETCH)})                              f0682
          8'b1??????1: IF_HWIACT = #`DELTA 1'b1;         // HWI                  f0683
          8'b0011???1: IF_HWIACT = #`DELTA HWISR[6];     // HWI RETI             f0684
          8'b00101??1: IF_HWIACT = #`DELTA EXCSR[6];     // EXC RETI             f0685
          8'b001001?1: IF_HWIACT = #`DELTA SWISR[6];     // SWI RETI             f0686
          8'b000???1?: IF_HWIACT = #`DELTA B_BUS[6];     // SRIS SR              f0687
          8'b??????00: IF_HWIACT = #`DELTA IF_HWIACT;    // hold state           f0688
          default:     IF_HWIACT = #`DELTA NEXT_HWIACT;                          f0689
        endcase                                                                  f0690
      end                                                                        f0691
    end                                                                          f0692
                                                                                 f0693
    //                                                                           f0694
    // Exception state for this IF step                                          f0695
    //                                                                           f0696
    always @(posedge CP) begin                                                   f0697
      if (STEP) begin                                                            f0698
        casez({KILL_ALU, DO_EXC, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0699
               SRIS_KSR, (~DIS_IDU | EMERG_FETCH)})                              f0700
          8'b01?????1: IF_EXCACT = #`DELTA 1'b1;         // exception            f0701
          8'b0011???1: IF_EXCACT = #`DELTA HWISR[5];     // HWI RETI             f0702
          8'b00101??1: IF_EXCACT = #`DELTA EXCSR[5];     // EXC RETI             f0703
          8'b001001?1: IF_EXCACT = #`DELTA SWISR[5];     // SWI RETI             f0704
          8'b000???1?: IF_EXCACT = #`DELTA B_BUS[5];     // SRIS SR              f0705
          8'b??????00: IF_EXCACT = #`DELTA IF_EXCACT;    // hold state           f0706
          default:     IF_EXCACT = #`DELTA NEXT_EXCACT;                          f0707
        endcase                                                                  f0708
      end                                                                        f0709
    end                                                                          f0710
                                                                                 f0711
    //                                                                           f0712
    // Software interrupt state for this IF step                                 f0713
    //                                                                           f0714
    always @(posedge CP) begin                                                   f0715
      if (STEP) begin                                                            f0716
        casez({KILL_ALU, DO_SWI, DO_RETI, ID_HWIACT, ID_EXCACT, ID_SWIACT,       f0717
               SRIS_KSR, (~DIS_IDU | EMERG_FETCH)})                              f0718
          8'b01?????1: IF_SWIACT = #`DELTA 1'b1;         // SWI                  f0719
          8'b0011???1: IF_SWIACT = #`DELTA HWISR[4];     // HWI RETI             f0720
          8'b00101??1: IF_SWIACT = #`DELTA EXCSR[4];     // EXC RETI             f0721
          8'b001001?1: IF_SWIACT = #`DELTA SWISR[4];     // SWI RETI             f0722
          8'b000???1?: IF_SWIACT = #`DELTA B_BUS[4];     // SRIS SR              f0723
          8'b??????00: IF_SWIACT = #`DELTA IF_SWIACT;    // hold state           f0724
          default:     IF_SWIACT = #`DELTA NEXT_SWIACT;                          f0725
        endcase                                                                  f0726
      end                                                                        f0727
    end                                                                          f0728
                                                                                 f0729
  //--------------------------------------------------------------------------   f0730
  //                                                                             f0731
  // Status pipeline: ID stage                                                   f0732
  //                                                                             f0733
  // Save delay slot status of ID instruction;                                   f0734
  // save program counter of ID instruction;                                     f0735
  // handling of ID status bits                                                  f0736
  //                                                                             f0737
  //--------------------------------------------------------------------------   f0738
                                                                                 f0739
    //                                                                           f0740
    // Save delay slot status of present instruction                             f0741
    //                                                                           f0742
    always @(posedge CP)                                                         f0743
      if (STEP) DS_IN_IDU = #`DELTA DS_IN_IFU;                 

⌨️ 快捷键说明

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