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

📄 demux.v

📁 ATSC发送端部分
💻 V
字号:
module demux(
             wire_encod_0_out_0,
             wire_encod_0_out_1,
             wire_encod_0_out_2,
             wire_encod_0_out_3,
             
             wire_encod_1_out_0,
             wire_encod_1_out_1,
             wire_encod_1_out_2,
             wire_encod_1_out_3,
             
             wire_encod_2_out_0,
             wire_encod_2_out_1,
             wire_encod_2_out_2,
             wire_encod_2_out_3,
             
             wire_encod_3_out_0,
             wire_encod_3_out_1,
             wire_encod_3_out_2,
             wire_encod_3_out_3,
             
             wire_encod_4_out_0,
             wire_encod_4_out_1,
             wire_encod_4_out_2,
             wire_encod_4_out_3,
             
             wire_encod_5_out_0,
             wire_encod_5_out_1,
             wire_encod_5_out_2,
             wire_encod_5_out_3,
             
             wire_encod_6_out_0,
             wire_encod_6_out_1,
             wire_encod_6_out_2,
             wire_encod_6_out_3,
             
             wire_encod_7_out_0,
             wire_encod_7_out_1,
             wire_encod_7_out_2,
             wire_encod_7_out_3,
             
             wire_encod_8_out_0,
             wire_encod_8_out_1,
             wire_encod_8_out_2,
             wire_encod_8_out_3,
             
             wire_encod_9_out_0,
             wire_encod_9_out_1,
             wire_encod_9_out_2,
             wire_encod_9_out_3,
             
             wire_encod_10_out_0,
             wire_encod_10_out_1,
             wire_encod_10_out_2,
             wire_encod_10_out_3,
             
             wire_encod_11_out_0,
             wire_encod_11_out_1,
             wire_encod_11_out_2,
             wire_encod_11_out_3,
             
             clk,
             clk4x,
             counter,
             rst_n,
             symbol_out,
             
             
              );

input [2:0] wire_encod_0_out_0; 
input [2:0] wire_encod_0_out_1; 
input [2:0] wire_encod_0_out_2; 
input [2:0] wire_encod_0_out_3; 
                   
input [2:0] wire_encod_1_out_0; 
input [2:0] wire_encod_1_out_1; 
input [2:0] wire_encod_1_out_2; 
input [2:0] wire_encod_1_out_3; 
                    
input [2:0] wire_encod_2_out_0; 
input [2:0] wire_encod_2_out_1; 
input [2:0] wire_encod_2_out_2; 
input [2:0] wire_encod_2_out_3; 
                   
input [2:0] wire_encod_3_out_0; 
input [2:0] wire_encod_3_out_1; 
input [2:0] wire_encod_3_out_2; 
input [2:0] wire_encod_3_out_3; 
                 
input [2:0] wire_encod_4_out_0; 
input [2:0] wire_encod_4_out_1; 
input [2:0] wire_encod_4_out_2; 
input [2:0] wire_encod_4_out_3; 
                 
input [2:0] wire_encod_5_out_0; 
input [2:0] wire_encod_5_out_1; 
input [2:0] wire_encod_5_out_2; 
input [2:0] wire_encod_5_out_3; 
                 
input [2:0] wire_encod_6_out_0; 
input [2:0] wire_encod_6_out_1; 
input [2:0] wire_encod_6_out_2; 
input [2:0] wire_encod_6_out_3; 
                     
input [2:0] wire_encod_7_out_0; 
input [2:0] wire_encod_7_out_1; 
input [2:0] wire_encod_7_out_2; 
input [2:0] wire_encod_7_out_3; 
                 
input [2:0] wire_encod_8_out_0; 
input [2:0] wire_encod_8_out_1; 
input [2:0] wire_encod_8_out_2; 
input [2:0] wire_encod_8_out_3; 
                 
input [2:0] wire_encod_9_out_0; 
input [2:0] wire_encod_9_out_1; 
input [2:0] wire_encod_9_out_2; 
input [2:0] wire_encod_9_out_3; 
              
input [2:0] wire_encod_10_out_0;
input [2:0] wire_encod_10_out_1;
input [2:0] wire_encod_10_out_2;
input [2:0] wire_encod_10_out_3;
                  
input [2:0] wire_encod_11_out_0;
input [2:0] wire_encod_11_out_1;
input [2:0] wire_encod_11_out_2;
input [2:0] wire_encod_11_out_3;

input clk;
input clk4x;
input rst_n;
input [3:0] counter;

output [2:0] symbol_out;

reg [2:0] ram_7_6 [11:0];
reg [2:0] ram_5_4 [11:0];
reg [2:0] ram_3_2 [11:0];
reg [2:0] ram_1_0 [11:0];
reg [2:0] symbol_out;

reg [1:0] addr_row;
reg [3:0] addr_line;
reg [1:0] seg_ctrl;
reg [9:0] counter_en;
reg enable; 

integer row_counter;
integer line_counter;
integer symbol_counter;


always @ (posedge clk)
begin
if (counter==4'd5) begin
ram_7_6[0]<=wire_encod_0_out_0;
ram_7_6[1]<=wire_encod_1_out_0;
ram_7_6[2]<=wire_encod_2_out_0;
ram_7_6[3]<=wire_encod_3_out_0;
ram_7_6[4]<=wire_encod_4_out_0;
ram_7_6[5]<=wire_encod_5_out_0;
ram_7_6[6]<=wire_encod_6_out_0;
ram_7_6[7]<=wire_encod_7_out_0;
ram_7_6[8]<=wire_encod_8_out_0;
ram_7_6[9]<=wire_encod_9_out_0;
ram_7_6[10]<=wire_encod_10_out_0;
ram_7_6[11]<=wire_encod_11_out_0;

ram_5_4[0]<=wire_encod_0_out_1;   
ram_5_4[1]<=wire_encod_1_out_1;   
ram_5_4[2]<=wire_encod_2_out_1;   
ram_5_4[3]<=wire_encod_3_out_1;   
ram_5_4[4]<=wire_encod_4_out_1;   
ram_5_4[5]<=wire_encod_5_out_1;   
ram_5_4[6]<=wire_encod_6_out_1;   
ram_5_4[7]<=wire_encod_7_out_1;   
ram_5_4[8]<=wire_encod_8_out_1;   
ram_5_4[9]<=wire_encod_9_out_1;   
ram_5_4[10]<=wire_encod_10_out_1; 
ram_5_4[11]<=wire_encod_11_out_1; 

ram_3_2[0]<=wire_encod_0_out_2; 
ram_3_2[1]<=wire_encod_1_out_2; 
ram_3_2[2]<=wire_encod_2_out_2; 
ram_3_2[3]<=wire_encod_3_out_2; 
ram_3_2[4]<=wire_encod_4_out_2; 
ram_3_2[5]<=wire_encod_5_out_2; 
ram_3_2[6]<=wire_encod_6_out_2; 
ram_3_2[7]<=wire_encod_7_out_2; 
ram_3_2[8]<=wire_encod_8_out_2; 
ram_3_2[9]<=wire_encod_9_out_2; 
ram_3_2[10]<=wire_encod_10_out_2;
ram_3_2[11]<=wire_encod_11_out_2;

ram_1_0[0]<=wire_encod_0_out_3; 
ram_1_0[1]<=wire_encod_1_out_3; 
ram_1_0[2]<=wire_encod_2_out_3; 
ram_1_0[3]<=wire_encod_3_out_3; 
ram_1_0[4]<=wire_encod_4_out_3; 
ram_1_0[5]<=wire_encod_5_out_3; 
ram_1_0[6]<=wire_encod_6_out_3; 
ram_1_0[7]<=wire_encod_7_out_3; 
ram_1_0[8]<=wire_encod_8_out_3; 
ram_1_0[9]<=wire_encod_9_out_3; 
ram_1_0[10]<=wire_encod_10_out_3;
ram_1_0[11]<=wire_encod_11_out_3;
end
end

always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n || ~enable) begin
    //row_counter=0;
    //line_counter=0;
    symbol_counter=0;
  end
  else  begin
    if (symbol_counter==827)
      symbol_counter=0;
    else
      symbol_counter=symbol_counter+1;
  
  end

end

always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n || ~enable) begin
   seg_ctrl <=2'd0;
  end
  else if (symbol_counter==827) begin
    if (seg_ctrl==2'd2)
      seg_ctrl<=2'd0;
    else
      seg_ctrl<=seg_ctrl+1'b1;
    end
end


always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n || ~enable) begin
    row_counter=0;
  end
  else  begin
    if (row_counter==11)
      row_counter=0;
    else
      row_counter=row_counter+1;
  end
end

always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n || ~enable) begin
    addr_row  <=2'd0;
  end
  else if (row_counter==0) begin
    if (addr_row==2'd3)
      addr_row<=2'd0;
    else 
      addr_row<=addr_row+1'b1; 
  end
end







always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n || ~enable) begin
    addr_line <=4'd0;
    //addr_row  <=2'd0;
  end
  else begin
    if (symbol_counter==0 && seg_ctrl==2'd0)
      addr_line<=4'd0;
    else if (symbol_counter==0 && seg_ctrl==2'd1)
      addr_line<=4'd4;
    else if (symbol_counter==0 && seg_ctrl==2'd2)
      addr_line<=4'd8;
    else if (addr_line==4'd11)
      addr_line<=4'd0;
    else 
      addr_line<=addr_line+1'b1;
   end
end

always @ (posedge clk4x or negedge rst_n)
begin
  if (~rst_n) begin
  end
  else begin
    case (addr_row)
    2'd0: begin
          symbol_out<=ram_7_6 [addr_line];
          end
    2'd1:begin
         symbol_out<=ram_5_4 [addr_line];
         end
    2'd2:begin
         symbol_out<=ram_3_2 [addr_line];
         end
    2'd3:begin
         symbol_out<=ram_1_0 [addr_line];
         end
    endcase
  
  
  
  
  
  
  end


end

always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n)
  counter_en<=10'd0;
else 
  counter_en<=counter_en+1'b1;
end

always @ (posedge clk4x or negedge rst_n)
begin
if (~rst_n)
  enable<=1'd0;
else if (counter_en==10'd74)
  enable<=1'b1;
else 
  enable<=enable;
end 



  
endmodule

⌨️ 快捷键说明

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