0

変換後にその結果を2つの14ビットレジスタに保存するアナログからデジタルへのコンバーターがあります。この値を 2 桁の 7 セグメント ディスプレイに表示する必要があります。

14 ビットの結果を示すシミュレーションは次のとおりです。

ここに画像の説明を入力

ご覧のとおり、2 桁表示の場合、値は非常に大きくなっています。これらの値を 10 分の 1 ボルトまで表示できます。表示多重化回路は次のとおりです。

module muxer(
     input clock,
    input reset,
    input [3:0] second,
    input [3:0] first,
    output a_m,
    output b_m,
    output c_m,
    output d_m,
    output e_m,
    output f_m,
    output g_m,
    output [1:0] cat_m
    );
 
//The Circuit for 7 Segment Multiplexing -
 
localparam N = 18;
 
reg [N-1:0]count; //the 18 bit counter which allows us to multiplex at 1000Hz
 
always @ (posedge clock)
 begin
  if (reset)
   count <= 0;
  else
   count <= count + 1;
 end
 
reg [3:0]sseg; //the 4 bit register to hold the data that is to be output
reg [1:0]cat_temp; //register for the 2 bit enable

always @ (*)
 begin
  case(count[N-1:N-2]) //MSB and MSB-1 for multiplexing
    
   2'b00 :
    begin
     sseg = first;
     cat_temp = 2'b01;
    end
    
   2'b01:
    begin
     sseg = second;
     cat_temp = 2'b10;
    end

  endcase
 end
assign cat_m = cat_temp;
 
reg [6:0] sseg_temp;
always @ (*)
 begin
  case(sseg)
   4'd0 : sseg_temp = 7'b1000000; //display 0
   4'd1 : sseg_temp = 7'b1111001; //display 1
   4'd2 : sseg_temp = 7'b0100100; //display 2
   4'd3 : sseg_temp = 7'b0110000; //display 3
   4'd4 : sseg_temp = 7'b0011001; //display 4
   4'd5 : sseg_temp = 7'b0010010; //display 5
   4'd6 : sseg_temp = 7'b0000010; //display 6
   4'd7 : sseg_temp = 7'b1111000; //display 7
   4'd8 : sseg_temp = 7'b0000000; //display 8
   4'd9 : sseg_temp = 7'b0010000; //display 9
   default : sseg_temp = 7'b0111111; //dash
  endcase
 end
assign {g_m, f_m, e_m, d_m, c_m, b_m, a_m} = sseg_temp;
 
endmodule

firstandsecondレジスタに値を渡して数字を表示できるようにしました。しかし、シミュレーションに示されているDataAとの値を使用してこれを達成する方法がわかりません。DataB

ありがとう

4

2 に答える 2

1

まあ、これは問題なくできます。10 進数または 16 進数で認識可能な数字という意味で、7 セグメント ディスプレイに「数字」を表示しないだけです。各セグメントはビットを表すことができます。「桁」ごとに 7 つのセグメントと 2 つの「桁」があります。7 * 2 = 14。

于 2013-05-11T00:58:42.450 に答える