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

📄 cpu_0.v

📁 DE2_TV_m_write.rar是用来去处抖动的
💻 V
📖 第 1 页 / 共 5 页
字号:

  output  [ 31: 0] break_readreg;
  output  [ 77: 0] dbrk0;
  output  [ 77: 0] dbrk1;
  output  [ 77: 0] dbrk2;
  output  [ 77: 0] dbrk3;
  output           dbrk_hit0_latch;
  output           dbrk_hit1_latch;
  output           dbrk_hit2_latch;
  output           dbrk_hit3_latch;
  output           trigbrktype;
  output           trigger_state_0;
  output           trigger_state_1;
  output  [ 23: 0] xbrk0;
  output  [ 23: 0] xbrk1;
  output  [ 23: 0] xbrk2;
  output  [ 23: 0] xbrk3;
  output  [  7: 0] xbrk_ctrl0;
  output  [  7: 0] xbrk_ctrl1;
  output  [  7: 0] xbrk_ctrl2;
  output  [  7: 0] xbrk_ctrl3;
  input            clk;
  input            dbrk_break;
  input            dbrk_goto0;
  input            dbrk_goto1;
  input            dbrk_hit0;
  input            dbrk_hit1;
  input            dbrk_hit2;
  input            dbrk_hit3;
  input   [ 37: 0] jdo;
  input            jrst_n;
  input            reset_n;
  input            take_action_break_a;
  input            take_action_break_b;
  input            take_action_break_c;
  input            take_no_action_break_a;
  input            take_no_action_break_b;
  input            take_no_action_break_c;
  input            xbrk_goto0;
  input            xbrk_goto1;

  wire    [  3: 0] break_a_wpr;
  wire    [  1: 0] break_a_wpr_high_bits;
  wire    [  1: 0] break_a_wpr_low_bits;
  wire    [  1: 0] break_b_rr;
  wire    [  1: 0] break_c_rr;
  reg     [ 31: 0] break_readreg;
  reg     [ 77: 0] dbrk0;
  reg     [ 77: 0] dbrk1;
  reg     [ 77: 0] dbrk2;
  reg     [ 77: 0] dbrk3;
  reg              dbrk_hit0_latch;
  reg              dbrk_hit1_latch;
  reg              dbrk_hit2_latch;
  reg              dbrk_hit3_latch;
  wire             take_action_any_break;
  reg              trigbrktype;
  reg              trigger_state;
  wire             trigger_state_0;
  wire             trigger_state_1;
  reg     [ 23: 0] xbrk0;
  reg     [ 23: 0] xbrk1;
  reg     [ 23: 0] xbrk2;
  reg     [ 23: 0] xbrk3;
  reg     [  7: 0] xbrk_ctrl0;
  reg     [  7: 0] xbrk_ctrl1;
  reg     [  7: 0] xbrk_ctrl2;
  reg     [  7: 0] xbrk_ctrl3;
  assign break_a_wpr = jdo[35 : 32];
  assign break_a_wpr_high_bits = break_a_wpr[3 : 2];
  assign break_a_wpr_low_bits = break_a_wpr[1 : 0];
  assign break_b_rr = jdo[33 : 32];
  assign break_c_rr = jdo[33 : 32];
  assign take_action_any_break = take_action_break_a | take_action_break_b | take_action_break_c;
  always @(posedge clk or negedge jrst_n)
    begin
      if (jrst_n == 0)
        begin
          xbrk_ctrl0 <= 0;
          xbrk_ctrl1 <= 0;
          xbrk_ctrl2 <= 0;
          xbrk_ctrl3 <= 0;
          trigbrktype <= 0;
          if (0 >= 1)
              xbrk0 <= 0;
          if (0 >= 2)
              xbrk1 <= 0;
          if (0 >= 3)
              xbrk2 <= 0;
          if (0 >= 4)
              xbrk3 <= 0;
          if (0 >= 1)
              dbrk0 <= 0;
          if (0 >= 2)
              dbrk1 <= 0;
          if (0 >= 3)
              dbrk2 <= 0;
          if (0 >= 4)
              dbrk3 <= 0;
        end
      else 
        begin
          if (take_action_any_break)
              trigbrktype <= 0;
          else if (dbrk_break)
              trigbrktype <= 1;
          if (take_action_break_a)
              case (break_a_wpr_high_bits)
              
                  2'd0: begin
                      if ((0 >= 1) && (break_a_wpr_low_bits == 2'b00))
                          xbrk0[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 2) && (break_a_wpr_low_bits == 2'b01))
                          xbrk1[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 3) && (break_a_wpr_low_bits == 2'b10))
                          xbrk2[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 4) && (break_a_wpr_low_bits == 2'b11))
                          xbrk3[23 : 0] <= jdo[31 : 0];
                  end // 2'd0 
              
                  2'd2: begin
                      if ((0 >= 1) && (break_a_wpr_low_bits == 2'b00))
                          dbrk0[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 2) && (break_a_wpr_low_bits == 2'b01))
                          dbrk1[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 3) && (break_a_wpr_low_bits == 2'b10))
                          dbrk2[23 : 0] <= jdo[31 : 0];
                      if ((0 >= 4) && (break_a_wpr_low_bits == 2'b11))
                          dbrk3[23 : 0] <= jdo[31 : 0];
                  end // 2'd2 
              
                  2'd3: begin
                      if ((0 >= 1) && (break_a_wpr_low_bits == 2'b00))
                          dbrk0[63 : 32] <= jdo[31 : 0];
                      if ((0 >= 2) && (break_a_wpr_low_bits == 2'b01))
                          dbrk1[63 : 32] <= jdo[31 : 0];
                      if ((0 >= 3) && (break_a_wpr_low_bits == 2'b10))
                          dbrk2[63 : 32] <= jdo[31 : 0];
                      if ((0 >= 4) && (break_a_wpr_low_bits == 2'b11))
                          dbrk3[63 : 32] <= jdo[31 : 0];
                  end // 2'd3 
              
              endcase // break_a_wpr_high_bits
          else if (take_action_break_b)
            begin
              if ((break_b_rr == 2'b00) && (0 >= 1))
                begin
                  xbrk_ctrl0[0] <= jdo[27];
                  xbrk_ctrl0[1] <= jdo[28];
                  xbrk_ctrl0[2] <= jdo[29];
                  xbrk_ctrl0[3] <= jdo[30];
                  xbrk_ctrl0[4] <= jdo[21];
                  xbrk_ctrl0[5] <= jdo[20];
                  xbrk_ctrl0[6] <= jdo[19];
                  xbrk_ctrl0[7] <= jdo[18];
                end
              if ((break_b_rr == 2'b01) && (0 >= 2))
                begin
                  xbrk_ctrl1[0] <= jdo[27];
                  xbrk_ctrl1[1] <= jdo[28];
                  xbrk_ctrl1[2] <= jdo[29];
                  xbrk_ctrl1[3] <= jdo[30];
                  xbrk_ctrl1[4] <= jdo[21];
                  xbrk_ctrl1[5] <= jdo[20];
                  xbrk_ctrl1[6] <= jdo[19];
                  xbrk_ctrl1[7] <= jdo[18];
                end
              if ((break_b_rr == 2'b10) && (0 >= 3))
                begin
                  xbrk_ctrl2[0] <= jdo[27];
                  xbrk_ctrl2[1] <= jdo[28];
                  xbrk_ctrl2[2] <= jdo[29];
                  xbrk_ctrl2[3] <= jdo[30];
                  xbrk_ctrl2[4] <= jdo[21];
                  xbrk_ctrl2[5] <= jdo[20];
                  xbrk_ctrl2[6] <= jdo[19];
                  xbrk_ctrl2[7] <= jdo[18];
                end
              if ((break_b_rr == 2'b11) && (0 >= 4))
                begin
                  xbrk_ctrl3[0] <= jdo[27];
                  xbrk_ctrl3[1] <= jdo[28];
                  xbrk_ctrl3[2] <= jdo[29];
                  xbrk_ctrl3[3] <= jdo[30];
                  xbrk_ctrl3[4] <= jdo[21];
                  xbrk_ctrl3[5] <= jdo[20];
                  xbrk_ctrl3[6] <= jdo[19];
                  xbrk_ctrl3[7] <= jdo[18];
                end
            end
          else if (take_action_break_c)
            begin
              if ((0 >= 1) && (break_c_rr == 2'b00))
                begin
                  dbrk0[65] <= jdo[23];
                  dbrk0[66] <= jdo[24];
                  dbrk0[67] <= jdo[25];
                  dbrk0[68] <= jdo[26];
                  dbrk0[69] <= jdo[27];
                  dbrk0[70] <= jdo[28];
                  if (1)
                      dbrk0[64] <= jdo[22];
                  if (1)
                    begin
                      dbrk0[71] <= jdo[29];
                      dbrk0[72] <= jdo[30];
                      dbrk0[73] <= jdo[31];
                    end
                  dbrk0[74] <= jdo[21];
                  dbrk0[75] <= jdo[20];
                  dbrk0[76] <= jdo[19];
                  dbrk0[77] <= jdo[18];
                end
              if ((0 >= 2) && (break_c_rr == 2'b01))
                begin
                  dbrk1[65] <= jdo[23];
                  dbrk1[66] <= jdo[24];
                  dbrk1[67] <= jdo[25];
                  dbrk1[68] <= jdo[26];
                  dbrk1[69] <= jdo[27];
                  dbrk1[70] <= jdo[28];
                  if (1)
                      dbrk1[64] <= jdo[22];
                  if (1)
                    begin
                      dbrk1[71] <= jdo[29];
                      dbrk1[72] <= jdo[30];
                      dbrk1[73] <= jdo[31];
                    end
                  dbrk1[74] <= jdo[21];
                  dbrk1[75] <= jdo[20];
                  dbrk1[76] <= jdo[19];
                  dbrk1[77] <= jdo[18];
                end
              if ((0 >= 3) && (break_c_rr == 2'b10))
                begin
                  dbrk2[65] <= jdo[23];
                  dbrk2[66] <= jdo[24];
                  dbrk2[67] <= jdo[25];
                  dbrk2[68] <= jdo[26];
                  dbrk2[69] <= jdo[27];
                  dbrk2[70] <= jdo[28];
                  if (1)
                      dbrk2[64] <= jdo[22];
                  if (1)
                    begin
                      dbrk2[71] <= jdo[29];
                      dbrk2[72] <= jdo[30];
                      dbrk2[73] <= jdo[31];
                    end
                  dbrk2[74] <= jdo[21];
                  dbrk2[75] <= jdo[20];
                  dbrk2[76] <= jdo[19];
                  dbrk2[77] <= jdo[18];
                end
              if ((0 >= 4) && (break_c_rr == 2'b11))
                begin
                  dbrk3[65] <= jdo[23];
                  dbrk3[66] <= jdo[24];
                  dbrk3[67] <= jdo[25];
                  dbrk3[68] <= jdo[26];
                  dbrk3[69] <= jdo[27];
                  dbrk3[70] <= jdo[28];
                  if (1)
                      dbrk3[64] <= jdo[22];
                  if (1)
                    begin
                      dbrk3[71] <= jdo[29];
                      dbrk3[72] <= jdo[30];
                      dbrk3[73] <= jdo[31];
                    end
                  dbrk3[74] <= jdo[21];
                  dbrk3[75] <= jdo[20];
                  dbrk3[76] <= jdo[19];
                  dbrk3[77] <= jdo[18];
                end
            end
        end
    end


  always @(posedge clk)
    begin
      if (take_action_any_break)
        begin
          dbrk_hit0_latch <= 1'b0;
          dbrk_hit1_latch <= 1'b0;
          dbrk_hit2_latch <= 1'b0;
          dbrk_hit3_latch <= 1'b0;
        end
      else 
        begin
          if (dbrk_hit0 & dbrk0[69])
              dbrk_hit0_latch <= 1'b1;
          if (dbrk_hit1 & dbrk1[69])
              dbrk_hit1_latch <= 1'b1;
          if (dbrk_hit2 & dbrk2[69])
              dbrk_hit2_latch <= 1'b1;
          if (dbrk_hit3 & dbrk3[69])
              dbrk_hit3_latch <= 1'b1;
        end
    end


  always @(posedge clk or negedge jrst_n)
    begin
      if (jrst_n == 0)
          break_readreg <= 32'b0;
      else if (take_action_any_break)
          break_readreg <= jdo[31 : 0];
      else if (take_no_action_break_a)
          case (break_a_wpr_high_bits)
          
              2'd0: begin
                  case (break_a_wpr_low_bits) // synthesis full_case
                  
                      2'd0: begin
                          break_readreg <= (0 >= 1) ? xbrk0 : 32'b0;
                      end // 2'd0 
                  
                      2'd1: begin
                          break_readreg <= (0 >= 2) ? xbrk1 : 32'b0;
                      end // 2'd1 
                  
                      2'd2: begin
                          break_readreg <= (0 >= 3) ? xbrk2 : 32'b0;
                      end // 2'd2 
                  
                      2'd3: begin
                          break_readreg <= (0 >= 4) ? xbrk3 : 32'b0;
                      end // 2'd3 
                  
                  endcase // break_a_wpr_low_bits
              end // 2'd0 
          
              2'd1: begin
                  break_readreg <= 32'b0;
              end // 2'd1 
          
              2'd2: begin
                  case (break_a_wpr_low_bits) // synthesis full_case
                  
                      2'd0: begin
                          break_readreg <= (0 >= 1)  ? 
                                  dbrk0[23 : 0] : 32'b0;
                  
                      end // 2'd0 
                  
                      2'd1: begin
                          break_readreg <= (0 >= 2)  ? 
                                  dbrk1[23 : 0] : 32'b0;
                  
                      end // 2'd1 
                  
                      2'd2: begin
                          break_readreg <= (0 >= 3)  ? 
                                  dbrk2[23 : 0] : 32'b0;
                  
                      end // 2'd2 
                  
                      2'd3: begin
                          break_readreg <= (0 >= 4)  ? 
                                  dbrk3[23 : 0] : 32'b0;
                  
                      end // 2'd3 
                  
                  endcase // break_a_wpr_low_bits
              end // 2'd2 
          
              2'd3: begin
                  case (break_a_wpr_low_bits) // synthesis full_case
                  
                      2'd0: begin
                          break_readreg <= (0 >= 1)  ? 
                                  dbrk0[63 : 32] : 32'b0;
                  
                      end // 2'd0 
                  
                      2'd1: begin
                          break_readreg <= (0 >= 2)  ? 
                                  dbrk1[63 : 32] : 32'b0;
                  
                      end // 2'd1 
                  
                      2'd2: begin
                          break_readreg <= (0 >= 3)  ? 
                                  dbrk2[63 : 32] : 32'b0;
                  
                      end // 2'd2 
                  
                      2'd3: begin
                          break_readreg <= (0 >= 4)  ? 
                                  dbrk3[63 : 32] : 32'b0;
                  
                      end // 2'd3 
                  
                  endcase // break_a_wpr_low_bits
              end // 2'd3 
          
          endcase // break_a_wpr_high_bits

⌨️ 快捷键说明

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