• 締切済み

2進数、12ビットを7セグメントに表示をVHDLで表したい

3つの7セグメントがあります。 2進数、12ビットのデータを7セグメントに以下のような表示をVHDLで表現したいのですが、書き方が分かりません。 たとえば、 000000000000 -> 0 000000000001 -> 1 000000000010 -> 2 ・・・・・・ 000000001010 -> 10 (1の位から10の位に桁上げ) 000000001011 -> 11 ・・・・・・ というように左側の12ビットのデータを右側の値で7セグメントに表示したいのです。 普通は、4ビット2進数のデータなら、デコーダを経由して7セグメントに表示可能ですが、上記表現の場合、どのようにVHDLで記述すればよろしいか、分かりません。 アドバイス下さい。よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

素直には BCD に直すのかなぁ. でも 7セグLED が 3個しかないからあふれちゃうんだけど, それはいいの?

tsugurin
質問者

補足

質問内容に、誤りがありました。 12ビットなので、3つの7セグメントは足りませんね。 4095なので、4つ必要ですね。失礼しました。 私がやりたいことは、12bitのADコンバータをFPGAを経由して7セグメントに値を表示したいわけですが、12ビットのデータを7セグメントに表示する方法が判らなくて質問をしていました。

関連するQ&A

  • VHDL について。7セグメントLED表示について

    15ビットでは10進数で65536まで数えることができますが、ある入力、例えば、 110011001100 を5個の7セグメントLEDを用いて数字を表示したい場合、どうすればよろしいのでしょうか?

  • テンキー入力をVHDLで記述したい

    4×4のテンキーをVHDLで記述をしたいのですが、どのように記述をしたらよいのか分かりません。 イメージとして、エンコード記述で十分かと思っていたのですが、分かりません。 最終的に、私がやりたいことは、 テンキーでボタンを押したら、押したボタンの値を7セグメントに表示したいのですが、記述の仕方がわかりません。 ご存じの方、教えていただけないでしょうか?

  • VHDLのsignedとunsignedの違いは?

    まえまえから疑問に思っていたので、教えてください。 VHDL(ハードウェア記述言語)の記述で、 ポートの宣言に 「signed」のときと「unsigned」のときがあるのですが、 違いを詳しく教えてください。 以前、誰かに「どちらかは2の補数を使っている」と聞いたのですが、 どちらなのかがわかりません。 また、2の補数以外で表現するとき、負の数はどうすればいいのでしょうか?

  • 記述の仕方について(VHDL)

    VHDLの記述で、同一の出力に入力の条件に対応した複数の値を代入することは出来ないのでしょうか? 7セグメントを光らせるプログラムなのですが、1つは1)時計回りにセグメントが光っていくもの、もうひとつは2)反時計回りに光っていくものとなっています。これをif文で条件をつけて、Aの場合は1)のprocessをBの場合には2)のをという感じで書いてみたんですが、FITをしようとするとエラーが出てしまいます。出力はportで「SEG」と定義しています。 プログラムの一部: process 1) begin  case 1) is when ・・・ => SEG <= ・・・   end case end process process 2) begin case 2) is when ・・・ => SEG <= ・・・ ・・・

  • デジタル放送のサブチャンネルのセグメント数配分

    お世話になります。 デジタル放送は1つのチャンネルが13のセグメントに分かれており、そのうち12のセグメントがワンセグ放送を除いた通常の放送に利用されていると解釈しています。 HD画質を放送する場合は12のセグメントが用いられ、さらに、使用するセグメント数を4つにして画質を落とすことで最大3つの番組を同時に放送できるのだと解釈しています。 テレビに搭載されているデジタル放送の番組表機能を使って番組表を見ると、1つのチャンネルが2つか3つのサブチャンネルに分かれています。 サブチャンネルに分かれているのはセグメントを配分して表示しているからだと言うことはわかるのですが、これが2つだったり3つだったりするのはどういう事なんでしょうか? サブチャンネルが3つあるところは 4セグメント×3サブチャンネル なのでしょう。 しかし、サブチャンネルが2つしかないところは 4セグメント×2サブチャンネル? 4セグメント+8セグメント? 6セグメント×2サブチャンネル? いろいろ調べても、6セグメントで放送しているような記述が見つかりません。 古い記述では8セグメントで準HD画質の放送も出来るという記述はありました。 しかし、現在のデジタル放送において、12セグメントか4セグメント以外で放送をしているという、根拠がしっかりした記述を見つけられませんでした。 とはいえ、周波数帯のほぼ1/3を無駄にするような「4セグメント×2サブチャンネル」の放送をするとも思えません。 実際のところはどうなのでしょうか? よろしくお願いします。 これが「AV機器(>テレビ)」のカテゴリーで良いかどうか我ながら疑問なんですが、放送に関するものは「ワンセグ放送」のカテゴリーになってしまうので現行のカテゴリーにしました。

  • VHDL ステートマシン

    VHDLで記述したソースに対して、指摘を受けました。 『ステートマシンの状態をTYPEで宣言しているが、論理合成をしたときに、どのステートがどの値かが不明なため、実機デバッグをする際に、モニター出力した場合、ステートが確認できない。場合によっては、合成の都度、ステートのビット割付けが変わる。 ステートはconstant文を使って、設計者が値を割付けるべきである。』 ここでお聞きしたいのは、2点です。 (1)このご指摘は正しいのでしょうか。 (2)可能であれば、変更したくない(現状のままとしたい)のですが、どういった理由付けをすれば   いいでしょうか。

  • Verilog-HDLからVHDL記述への書き方について

    Verilog-HDLからVHDLへ変換をしています。1ヵ所だけ、記述の書き方がわからないので、アドバイス下さい。 module sample(ck,res,trg,busy,sclk,cs_n,sdata,data); input ck, res, trg, sdata; output busy, sclk, cs_n; output [15:0] data; reg [4:0] cnt; reg busy, cs; reg [15:0] buff, data; wire adend; assign sclk = ck; assign adend =(cnt==5'd20); <= この部分のVHDL記述が分かりません。 -------------------------- assign sclk = ck; をVHDLで表すと、 sclk <= ck;ですが、 assign adend =(cnt==5'd20);これは、adendは1bitで、cntは5bitなので、表現しようがありません。 ふと思ったのは、 5'd20は、10100なので、下記の記述も可能か自信がありません。 adend <= cnt(5) and cnt(3); アドバイス下さい。 よろしくお願いします。

  • 合計ビット数

    4語(16バイト)からなるブロックを使用した64Kバイトのキャッシュを実現するために必要な合計ビット数を算出せよ.この値はキャッシュの容量とは異なる.キャッシュの容量は通常はキャッシュに格納されるデータのバイト数を指すからである.キャッシュを実現するためのビット数は,データとタグと有効ビットのすべてを格納するのに必要な記憶容量を表す。 この問題で エントリが4K個あり 各エントリは 128bit(データ)+16bit(タグ)+1bit(有効ビット)=145bit ここまで分かったのですが答えが 593,920bit 145*4K では答えになりません どうすればいいのでしょうか?教えてください.よろしくお願いします

  • 2進数からBCDコードへの変換

    今,2進カウンタを作り,これから7セグメントLEDへ出力する回路を作りたいのですが,1桁の場合は,デコーダICでそのまま変換可能なのですが,10進数に直したときに2桁以上になるものは,デコーダの前で各桁ごとのBCDコードに分けてあげないといけなくなります。ここが分からないのです。 回路の構成としては,カウンタ部分をアナログで構成し,そこで8個のスイッチをつけて,それぞれ2進数の各桁の入力としています。これと,3個のデコーダICと7セグメントLEDで2^8=255までを表示させたいのですが,どのような回路構成だとシンプルに作れるのでしょうか。また,そのようなICは存在するのでしょうか。

  • 2進数データのビット演算

    vb.netにて 0と1からなる2進数で記録した2つの値をビット演算したいと思っております。 Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。 無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。 ご存知の方、ご教授よろしくお願いいたします。