ちょっと変わったマニアな作品が集結

8*8の64bitのデータを離れた場所にある8*8の発光ダイオードの表示器に表示したいのですが、そのままだと65心のケーブルが必要となるため、パラレル-シリアル変換して送りたいのですが、原理的には理解していても、実際の回路(IC選択等)がわかりません。参考になる回路のあるサイトなどご存知の方、ありましたらよろしくお願いいたします。
・8*8のデータはすべて0,5Vの電圧の出ている端子が64個あるイメ
 ージです。
・随時変化するデータに対し、リアルタイムで表示したいとおもいますが、
 300msまでの遅れなら大丈夫です。
・PICを使う手もあるかと思いますか、当方PICに不慣れなため、できれば
 すべてTTLで組みたいと思います。

このQ&Aに関連する最新のQ&A

A 回答 (9件)

No.6です。


申し訳ないです。
前回のカキコ、不手際が有ったようです。

私なら、送信側に74LS165を8個。
受信側に、74LS594 *8個
使用します。

また、これらの制御信号を生成するのに
74LS163 を使用します。
この論理回路の場合、何ビット送信したか
カウントしなければ成らないからです。

そのほか、AND,NOT少々。

伝送線は

・信号ライン
・クロックライン
・制御ライン
・グランドライン
・(リセットライン)

リセットは、送受信同時にリセットする
必要が無ければ伝送する必要は無いと思います。

図面が見られれば直ぐに理解できる話だとは
思うのですが…

取りあえずは、以上3つのLSIの仕様書を
テキサスインスツルメンツのページから
ダウンロードして、良く読んでみてください。

この回答への補足

いろいろとありがとうございます。
今週の土日にゆっくりと考えてみたいと思います。
それで、また、わからないところがあれば、よろしくおねがいいたします。

補足日時:2005/09/02 17:38
    • good
    • 0

No.6です。


回路図を描きながら思ったのですが、
もしかしたら、PCでコントロールされている
回路ですか?
もしくは、マイコンが載っていますか?
それだと、多少事情が変わってきます。

この回答への補足

ありがとうございます。m(_ _)m
今回はPCやマイコン、PICは使用しないつもりです。
専用のカスタムICはOKですが…

補足日時:2005/09/01 00:15
    • good
    • 0

今回は荷が重いかもしれませんが


1信号線は最も望ましい方法です
DCフリー反転フリーのデータ構造は

例えば
11100010AaBbCcDc…Zz
の繰り返しで実現できます
ただしA,B,C,…,Zはそれぞれ1ビットデータであって64個(26個ではない)あり
a,b,c,…,zはそれぞれA,B,C,…,Zの反転である
3連続1を検出した後の0→1の時点からデータ打ち抜き位置を決めればいいのです
    • good
    • 0

既に、No.5さんが詳しく回答しているようなので


簡単な補足をしてみます。

パラレル -> シリアル
74LS165 74LS597 74LS674 等

シリアル -> パラレル
74LS164 74LS594 74LS673 等

伝送のI/Oには240や540を使った方が良いかも。

LSシリーズで仕様を満たすか要検討です。
LED(7SEG?)に寄っては、ドライブICの出力がO.C.のものを選択した方が良いかもしれません。

300msの遅延が可能なら伝送速度は10Mhz程度で充分ですね。
只、信号品質が10Mhzに耐えられるかは別問題です。

LSIメーカーはここ。
http://www.tij.co.jp/

通販はココとか…
多分、個人でも売ってくれたと思います。
http://www.rswww.co.jp/

あるいは、トラ技の広告からでも探してください。
昨今、74シリーズは絶滅の危機に瀕してますから、レアな型番は
入手しにくいかもしれません。

この程度の答えでご理解できたでしょうか?
どうしても、参考回路が必要なら描きますが…(^_^;
それでは、頑張ってください。

この回答への補足

もし、参考回路をお願いできるのでしたら、こんなに嬉しいことはありません。m(_ _)m

補足日時:2005/08/31 00:14
    • good
    • 0

SN74シリーズで8ビットのシフトレジスタがありますので、それを8個使って送受信というのはいかがですか。



送信側:SN74LS165×8個で64ビットをラッチして、順次シフトアウト
受信側:SN74LS164×8個で64ビットを順次シフトイン

http://focus.ti.com/docs/prod/folders/print/sn74 …
http://focus.ti.com/docs/prod/folders/print/sn74 …

送信側と受信側の接続には2本の信号線を使用するのが楽です。

1. クロック
2. データ

「シリアル転送するデータの先頭に1を追加し、受信側のシフトレジスタの末端から1がシフトアウトされたら表示」とか「転送ビット数を数えて64ビットになったら表示」というふうにする場合、転送の開始を明示する信号が必要です。データに重畳するのは回路が面倒なので、信号線(リセット)を1本追加するのが楽でしょう。

あるいは、送信側で転送ビット数を数えておき、表示タイミングも送信側で制御するという方法もあります。この場合も別の信号線(転送終了)が必要です。

データの転送中は表示をオフにする・・・という場合シフトレジスタは上記だけで済みますが、データの転送中は「前回転送したデータを表示し続ける」としたい場合は、別途ラッチが必要です。これもTTLに8ビットラッチがあるはずなので、それを使えば8個で済みます。
    • good
    • 0

伝送線は何本使えますか。

1本だとかなり辛い(同期をどうやって取るか)。(極性反転とか、パルス幅とか使ってでも)3本使えれば楽勝。
8ビットまたは16ビットだと汎用ICで対応しやすいので、64ビットを4か8に分割してそれぞれを送るとすると、6本か10本の伝送線があれば回路規模をずっと小さくできます。

すべてTTLということなので、プログラマブルな部品や大規模集積回路や専用品が無かった時代を思い出しながら書きます。手元に資料が無いので、ICの型番はしらべてくださいね。
まず、変換中に入力が変化すると変な値が出てしまいますから、ラッチが必要です。エッジでラッチするDタイプが便利でしょう。8個入りがあったと思います。
64個のデータを取り込むためにはデータセレクタを使うかシフトレジスタで順に取り出すか。ラッチとシフトレジスタが入ったICもありましたね。

並列のデータを順次読み出すクロックを発生する回路が必要です。これに、ラッチをセットするための開始と終了パルスを生成して・・・・

読み出し側では、終了信号のタイミングで信号を振り分けてラッチしてゆく。シフトレジスタで順にとりこんで、ラッチして出力。あるはマルチプレクサとラッチか。

伝送線が2本の場合は、スタート・ストップとクロックをうまく重ねる工夫が必要。伝送線が1本だと、信号とクロックをどうやって重ねるか。

今でも手に入るのかなあ? UARTというICがありました。上記のような機能のすべてを含んで、非同期通信できる物でした。これを送受信双方に8個づつ使えば・・・ 値段が・・・

この回答への補足

伝送線の数に制限はありません。65本が多すぎるのでパラーシリ変換すれば…、と思いついただけですから。
UARTを調べてみました。
すべてTTLで組みたいと書いたのは、PICを使う事を避けたかったからで、UARTのような専用ICがあるのなら、それを中核において、あとはパラレルデータを切り替えていけばいい訳ですよね。
でも、参考回路がないと…。どこかにそのような専用ICを使った参考回路はないでしょうか?

補足日時:2005/08/30 20:17
    • good
    • 0

ディジタル回路の本を市の図書館でいくつか借りて載っている回路をできるだけ多く見ることをお勧めします


東京だとキーワード検索してインターネットで予約できるのでそれらしい本を制限数まで予約すればよいでしょう
便利になりましたね
    • good
    • 0

回路などは自分で組むしかありません


論理回路の知識があれば簡単に組めるはずですが
何が難しいのでしょうか?

この回答への補足

今回のパラ-シリ変換回路は全く経験がないので、最初のスタートで困っています。 同じような回路(8×8に限らず)で参考にできる回路があれば、すぐ組めると思うんですが…
とっかかりがめません。

補足日時:2005/08/29 20:05
    • good
    • 0

信号線1本とGNDを同軸ケーブルで送ればいいでしょう


信号線にはシリアル化した情報に加えて仕切り情報を送らなければなりません


例えば1ワードのタイミングチャートを




_  ̄ ̄ ̄ ̄ ̄_  ̄ ̄_  ̄ ̄_ ̄_ ̄ ̄ ̄_ ̄ ̄ ̄_
 │__│□│ │□│ │□│ … │□│ │□│



とする□は情報で1ワードあたり64個(ビット)

連続してローレベルになるのはワードのはじめだけだからこれを検出すればデータを打ち抜ける

この回答への補足

ありがとうございます。
原理的にはわかるのですが、実際の回路(IC選択等)がわかりません。
回路図等はどこかにないでしょうか?

補足日時:2005/08/29 15:34
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qverilogで配列の任意の8bitを取り出す方法

配列の中の任意の8bitを取り出すのに、
 hoge[fuga:fuga + 8]
と書きましたが、エラーになってしまいました。

配列の添え字には、変数は記述できないのでしょうか?
とすると、他にどの様な書き方があるのでしょうか?
教えてください。よろしくお願いします。
(verilog初心者です)

Aベストアンサー

1. Verilog2001ならばできます。相対バス幅指定構文がありますので。

2. Verilog1995での逃げとしては、
hoge[fuga:fuga + 8] と書かないで
{hoge[fuga],hoge[fuga+1],hoge[fuga+2],・・(省略)・・・,hoge[fuga+8]}と書くことです。

試してみてください。

Q電気・電子回路のバッファについて

電気回路にバッファというものがありますが、これはどのような働きをしているのですか?(74LS~ とか) 安定化のためにあるようですが…
詳しく教えて頂けませんでしょうか。

Aベストアンサー

バッファー(Buffer)は日本語に直訳すれば緩衝増幅器になります。緩衝増幅器は電流(波形)の増幅、電圧(波形)の増幅や整形、出力インピーダンス変換(高出力インピーダンスを低インピーダンスや整合インピーダンスに変換)のために挿入されます。回路1の出力を回路2の入力に接続する時、回路2を接続した影響が回路2に及ばなくしたり、出力波形の整形や出力インピーダンスを変換します。
ディジタル回路では出力用のバッファーでは
1)出力電流増幅、2)出力インピーダンスを下げる、3)論理レベル(1や0に対応する電圧)の電圧レベル調整・波形整形、が目的で
1)と2)はファンアウト増やす機能です。出力のタイプはオープンコレクター(オープンドレイン)、3ステート、単にファンアウトが大きいものがあります。
入力用バッファーでは、1)雑音や論理レベルが明確でないデジタル信号の波形整形(論理1と論理0の明確な信号に再生)、2)後続の回路の負荷(ファンイン)を減らして前置回路への影響を少なくする。
といった目的で使われ、主に入力電圧振幅に対して出力電圧にヒステリシス特性を持つシュミット回路が採用されています。

バッファー(Buffer)は日本語に直訳すれば緩衝増幅器になります。緩衝増幅器は電流(波形)の増幅、電圧(波形)の増幅や整形、出力インピーダンス変換(高出力インピーダンスを低インピーダンスや整合インピーダンスに変換)のために挿入されます。回路1の出力を回路2の入力に接続する時、回路2を接続した影響が回路2に及ばなくしたり、出力波形の整形や出力インピーダンスを変換します。
ディジタル回路では出力用のバッファーでは
1)出力電流増幅、2)出力インピーダンスを下げる、3)論理レベル(1...続きを読む

QVerilog HDLで立下りと立ち上がり両方のエッジを検出する方法を

Verilog HDLで立下りと立ち上がり両方のエッジを検出する方法を探しています。
色々試してみたのですが、そのようなことはできないとエラーがでました。
元の周波数を2倍にして立ち上がりだけ見るという方法は、今回私が想定している仕様では使えないので、どうしても両エッジを検出したいのです。
どなたかご存知の方いらっしゃいましたら回答のほうよろしくお願いします。
ちなみに使用しているFPGAはXC3S200で使用ツールはXilinx社のISEです。

Aベストアンサー

回答が無いようなのでHDLはよく知らないのですが参考になりそうなページを貼っておきます。
http://fenrir.naruoka.org/archives/000701.html
原因は両エッジを検出できるようなフリップフロップが普通のFPGAには無いことのようですが、解決策はよく分かりません。

Qカットオフ周波数とは何ですか?

ウィキペディアに以下のように書いてました。

遮断周波数(しゃだんしゅうはすう)またはカットオフ周波数(英: Cutoff frequency)とは、物理学や電気工学におけるシステム応答の限界であり、それを超えると入力されたエネルギーは減衰したり反射したりする。典型例として次のような定義がある。
電子回路の遮断周波数: その周波数を越えると(あるいは下回ると)回路の利得が通常値の 3 dB 低下する。
導波管で伝送可能な最低周波数(あるいは最大波長)。
遮断周波数は、プラズマ振動にもあり、場の量子論における繰り込みに関連した概念にも用いられる。


ですがよくわかりません。
わかりやすく言うとどういったことなのですか?

Aベストアンサー

>電子回路の遮断周波数: その周波数を越えると(あるいは下回ると)回路の利得が通常値の 3 dB 低下する。
>導波管で伝送可能な最低周波数(あるいは最大波長)。
>遮断周波数は、プラズマ振動にもあり、場の量子論における繰り込みに関連した概念にも用いられる。

簡単にいうと、一口に「カットオフ周波数」と言っても分野によって意味が違う。
電子回路屋が「カットオフ周波数」と言うときと、導波管の設計屋さんが「カットオフ周波数」と言うとき
言葉こそ同じ「カットオフ周波数」でも、意味は違うって事です。



電子回路の遮断周波数の場合
-3dB はエネルギー量にして1/2である事を意味します。
つまり、-3dBなるカットオフ周波数とは

「エネルギーの半分以上が通過するといえる」

「エネルギーの半分以上が遮断されるといえる」
の境目です。

>カットオフ周波数は影響がないと考える周波数のことでよろしいでしょうか?
いいえ
例えば高い周波数を通すフィルタがあるとして、カットオフ周波数が1000Hzの場合
1010Hzだと51%通過
1000Hzだと50%通過
990Hzだと49%通過
というようなものをイメージすると解り易いかも。

>電子回路の遮断周波数: その周波数を越えると(あるいは下回ると)回路の利得が通常値の 3 dB 低下する。
>導波管で伝送可能な最低周波数(あるいは最大波長)。
>遮断周波数は、プラズマ振動にもあり、場の量子論における繰り込みに関連した概念にも用いられる。

簡単にいうと、一口に「カットオフ周波数」と言っても分野によって意味が違う。
電子回路屋が「カットオフ周波数」と言うときと、導波管の設計屋さんが「カットオフ周波数」と言うとき
言葉こそ同じ「カットオフ周波数」でも、意味は違うって事です...続きを読む

Qプルアップ抵抗値の決め方について

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調節していって電圧降下が0.9Vとなるように設定するのでしょうか。どうぞご助力お願いします。



以下、理解の補足です。
・理解その1
ふつう、こういう場合は抵抗値を計算するためには、電圧降下と抵抗に流れる電流が決まっていることが前提だと考えていました。V=IRを計算するためには、この変数のうち2つを知っていなければならないからです。
また、例えば5V/2Aの電源を使った場合、マイコン周りは電源ラインからの分岐が多いため、この抵抗に2A全てが流るわけではないことも理解しています。

電源ラインからは「使う電流」だけ引っ張るイメージだと理解しているのですが、その「使う電流」が分からないため抵抗値を決定できません。(ポート入力電流の最大定格はありますが…)


・理解その2
理解その1で書いたように、抵抗値を計算するためには、電圧降下と抵抗に流れる電流が必要だと理解しています。図2を例に説明します。Rの値を決めたいとします。
CD間の電圧降下が5Vであることと、回路全体を流れる電流が2Aであることから、キルヒホッフの法則より簡単にRの値とそれぞれの抵抗に流れる電流が分かります。今回の例もこれと同じように考えられないのでしょうか。

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調...続きを読む

Aベストアンサー

NO1です。

スイッチがONした時に抵抗に流れる電流というのは、最大入力電流や最大入力電圧
という仕様から読めば良いのでしょうか。
→おそらくマイコンの入力端子の電流はほとんど0なので気にしなくてよいと思われます。
入力電圧は5Vかけても問題ないかは確認必要です。

マイコンの入力電圧として0Vか5Vを入れたいのであれば、抵抗値は、NO3の方が
言われているとおり、ノイズに強くしたいかどうかで決めれば良いです。
あとは、スイッチがONした時の抵抗の許容電力を気にすれば良いです。
例えば、抵抗を10KΩとした場合、抵抗に流れる電流は5V/10kΩ=0.5mAで
抵抗で消費する電力は5V×0.5mA=0.0025Wです。
1/16Wの抵抗を使っても全く余裕があり問題ありません。
しかし、100Ωとかにしてしまうと、1/2Wなどもっと許容電力の大きい抵抗を
使用しなければいけません。
まあ大抵、NO3の方が書かれている範囲の中間の、10kΩ程度付けておけば
問題にはならないのでは?

Qverilog 符号付加減算(最上位符号拡張)について教えてください

verilog初心者で、(2の補数形式)符号付加減乗算器を作成しています。

…が符号拡張のところで解決できずにいます f(--;)
もとの数a,bの最上位ビット(符号ビット)を16ビット分(乗算器に
あわせ)増やすことは理解できたのですが、それをどうverilog
記述すればいいのかわかりません。下記にある記述ではエラーと
なってしましました。
0拡張や、演算結果の最上位ビットだけを符号ビットにしてみたりし
たのですが、これではダメとのことで もうどうやったらいいのか
わからなくなってきました。(TT);

どなたか教えてください。
m(_ _)m
--------------------------------------------------------------
module kadai(a,b,c,q);
input [15:0] a,b;
input [2:0] c;
output [32:0] q;
wire [32:0] q;

assign q =(c == 3'b000)?{16{a[0]},a}+{16{b[0]},b}:
(c == 3'b001)?{16{a[0]},a}-{16{b[0]},b}:
     (c == 3'b010)?{16{a[0]},a}*{16{b[0]},b};
endmodule
----------------------------------------------------------------
{16{a[0]},a}や{16{a[0]},b}という表現がいけないようなのですが…
よろしくお願い致します。

verilog初心者で、(2の補数形式)符号付加減乗算器を作成しています。

…が符号拡張のところで解決できずにいます f(--;)
もとの数a,bの最上位ビット(符号ビット)を16ビット分(乗算器に
あわせ)増やすことは理解できたのですが、それをどうverilog
記述すればいいのかわかりません。下記にある記述ではエラーと
なってしましました。
0拡張や、演算結果の最上位ビットだけを符号ビットにしてみたりし
たのですが、これではダメとのことで もうどうやったらいいのか
わからなくなってきま...続きを読む

Aベストアンサー

1です。
ちょっと意地悪な物言いでしたね。ゴメンナサイ。
例えば4bitの符号を8bitに拡張するときは、結局のところ
{a[3],a[3],a[3],a[3],a[3],a[2],a[1],a[0]}と左側にどんどん一番左のbit(MSB)を加えていけばよいのです。
これを見やすく書いたのが { {4{a[3]}},a[3:0] }ということですよね。
加減算は符号拡張して左右のbit幅さえ合わせておけば問題なく演算できます。
q[32:0] = (aを33bitに符号拡張) + (bを33bitに符号拡張);
です。aもbもqも同じbit幅にするのです。これだと溢れるような気がするかもしれませんが、こうしないと符号付加減算はおかしな事になります。

乗算はもっと面倒で、
wire absa[bit幅は考えてね],absb[bit幅は考えてね];

absa = a[MSB] ? (~a[MSB以外])+1 : a[MSB以外];
absb = b[MSB] ? (~b[MSB以外])+1 : b[MSB以外];
として absa*absb を演算し、最後にaとbの符号に応じてまた符号反転してください。

こういう書き方だと、実際のハードウェアに即してない気がするかもしれませんが(実際のハードは大抵符号付乗算器マクロを持っているので)、
コンパイラは優秀なもので、ちゃんと判断してマクロを割り当ててくれます。

1です。
ちょっと意地悪な物言いでしたね。ゴメンナサイ。
例えば4bitの符号を8bitに拡張するときは、結局のところ
{a[3],a[3],a[3],a[3],a[3],a[2],a[1],a[0]}と左側にどんどん一番左のbit(MSB)を加えていけばよいのです。
これを見やすく書いたのが { {4{a[3]}},a[3:0] }ということですよね。
加減算は符号拡張して左右のbit幅さえ合わせておけば問題なく演算できます。
q[32:0] = (aを33bitに符号拡張) + (bを33bitに符号拡張);
です。aもbもqも同じbit幅にするのです。これだと溢れるような気がするか...続きを読む

Qアルゴリズム

この問題も分かりません。

選択整列法は安定か?挿入整列法とバブル整列法はどうか?

よろしくお願いします。

Aベストアンサー

安定な整列法:選択法、挿入法
不安定な整列法:バブル整列法

安定か不安定かは、すでに回答されている通り、同じキーのものが整列後も同じ順番に並んでいるかどうかと言うことです。ご自分で確かめてください。

Qverilogのcase文

always @(posedge CLK)
begin
case (DIP_SW)
0:Q[0] <= SW1_OUT;
0:Q[1] <= Q[0];
0:Q[2] <= Q[1];
0:Q[3] <= Q[2];
0:Q[4] <= Q[3];
0:Q[5] <= Q[4];
0:Q[6] <= Q[5];
0:Q[7] <= Q[6];
1:Q[7] <= SW1_OUT;
1:Q[6] <= Q[7];
1:Q[5] <= Q[6];
1:Q[4] <= Q[5];
1:Q[3] <= Q[4];
1:Q[2] <= Q[3];
1:Q[1] <= Q[2];
1:Q[0] <= Q[1];
endcase
end
これはプログラムの一部なのですが、0と1の場合で分岐させる予定です。もちろん上のソースでは上手くいきませんでした。case文ではなくif文のほうがよいでしょうか?

always @(posedge CLK)
begin
case (DIP_SW)
0:Q[0] <= SW1_OUT;
0:Q[1] <= Q[0];
0:Q[2] <= Q[1];
0:Q[3] <= Q[2];
0:Q[4] <= Q[3];
0:Q[5] <= Q[4];
0:Q[6] <= Q[5];
0:Q[7] <= Q[6];
1:Q[7] <= SW1_OUT;
1:Q[6] <= Q[7];
1:Q[5] <= Q[6];
1:Q[4] <= Q[5];
1:Q[3] <= Q[4];
1:Q[2] <= Q[3];
1:Q[1] <= Q[2];
1:Q[0] <= Q[1];
endcase
...続きを読む

Aベストアンサー

同じラベルを重ねて書かない。
ステートメントが複数あるならbegin-endで囲む。
----------------------------------------
always @(posedge CLK)
begin
  case (DIP_SW)
    0:
    begin
      Q[0] <= SW1_OUT;
      Q[1] <= Q[0];
      Q[2] <= Q[1];
      Q[3] <= Q[2];
      Q[4] <= Q[3];
      Q[5] <= Q[4];
      Q[6] <= Q[5];
      Q[7] <= Q[6];
    end

    1:
    begin
      Q[7] <= SW1_OUT;
      Q[6] <= Q[7];
      Q[5] <= Q[6];
      Q[4] <= Q[5];
      Q[3] <= Q[4];
      Q[2] <= Q[3];
      Q[1] <= Q[2];
      Q[0] <= Q[1];
    end
  endcase
end
----------------------------------------

ただ、Qが(レジスタ配列などではなく)ただの多ビット信号なら、
そもそも代入文を8つも並べる必要性がなさそう。
----------------------------------------
always @(posedge CLK)
begin
  case (DIP_SW)
    0: Q <= {Q[6:0], SW1_OUT};
    1: Q <= {SW1_OUT, Q[7:1]};
  endcase
end
----------------------------------------

> case文ではなくif文のほうがよいでしょうか?
これくらいならif文で十分なようには思える。

同じラベルを重ねて書かない。
ステートメントが複数あるならbegin-endで囲む。
----------------------------------------
always @(posedge CLK)
begin
  case (DIP_SW)
    0:
    begin
      Q[0] <= SW1_OUT;
      Q[1] <= Q[0];
      Q[2] <= Q[1];
      Q[3] <= Q[2];
      Q[4] <= Q[3];
      Q[5] <= Q[4];
      Q[6] <= Q[5];
      Q[7] <= Q[6];
    end

    1:
    begin
      Q[7] <= S...続きを読む

Qレジスタマップって何ですか?

拡張カードで、
レジスタマップというのはカードのRAM上の領域を表しているのですか?
レジスタと聞くとCPUのレジスタを思い浮かぶのですが、、、
よろしくおねがいします。。

Aベストアンサー

レジスタは一般に「デジタル回路において、フリップフロップなどの回路素子を用いてデータを保持する回路」(by Wikipedia)のこと。

拡張カードでは、外部インタフェースとなるレジスタにアクセス(読み書き)することで拡張カードの情報を読み取ったりコントロールしたりできる。
このレジスタは拡張カードのアドレス空間に配置されるので、どのアドレスにどのレジスタがあるかを示すレジスタマップが公開される。
# レジスタマップ=レジスタのアドレスマップ

ちなみにCPUレジスタではアドレスは設定されないことも多いが、レジスタにアドレスを設定して、アドレスでアクセスできるものもある。

Q三端子レギュレータに付けるコンデンサ

三端子レギュレータ7805を使用するのに、あるHPで「入力、出力側にそれぞれ1つずつ0.1μFのコンデンサを付ける」というのを見た事があるのですが、別の本には入力側には22μF、出力側には100μFを取り付けるとありました。
どちらが正解なのでしょう?また、2つの違いは何でしょう?
目的に応じて使い分けたりするのでしょうか?

Aベストアンサー

どちらも正しく、どちらも間違っています。
本に書いてあるから、ではなく、設計によって違ってきます。
つまり、入力電圧、入力のリップル含有率、出力電流、出力に求めたいリップル含有率、出力のリアクタンス分・・・などなど
それによって計算します。
それから、リップル率によってコンデンサに流れる電流を求め、そこから発熱を求め、それに耐えられるコンデンサを選びます。
また、入力電圧と出力電圧の差、出力電流、リップル率、使用状態の周囲温度などから、レギュレータの発熱を計算し、熱抵抗を求めて、放熱板を決定します。
かなり面倒な計算なので、おおよその回答を言いますと、7805は出力が5V1Aの定格ですから、最大0.8Aまで使うとし、入力はAC6Vの全波整流として、入力も出力も100μFの電解コンデンサと0.1μFのプラスチックコンデンサを並列接続したもので、いけると思います。
ただし、0.1μFのコンデンサはレギュレータの足に直結します。
100μFのコンデンサは回路中についていればどこでも良いです。

入力はAC6Vの全波整流で、出力電流を0.8A取ると、レギュレータで約1.6Wを消費しますので、周囲温度を30℃まで使うとして、ジャンクション温度を80℃にしたければ、熱抵抗は25℃/W程度の放熱板が必要です。
これ以外の入力電圧や、出力電流の場合は再計算が必要です。

どちらも正しく、どちらも間違っています。
本に書いてあるから、ではなく、設計によって違ってきます。
つまり、入力電圧、入力のリップル含有率、出力電流、出力に求めたいリップル含有率、出力のリアクタンス分・・・などなど
それによって計算します。
それから、リップル率によってコンデンサに流れる電流を求め、そこから発熱を求め、それに耐えられるコンデンサを選びます。
また、入力電圧と出力電圧の差、出力電流、リップル率、使用状態の周囲温度などから、レギュレータの発熱を計算し、熱抵抗を...続きを読む


人気Q&Aランキング