現在保持している4ビットの値に、スイッチが押されると、ある3ビットの値を足し合わせるような回路が作りたいのですが、どのように回路を作れば良いのか分かりません。
DFFと全加算器を用いて作ってみたのですが、加算器の一方の入力にDFFの出力を与えているため、加算結果がDFFに出力されたものがまたすぐに加算器の入力に入ってしまうためなのか、クロックのタイミングによって失敗してしまいます。
仕様としては、
①結果が15を超えるような計算が行われた場合、出力は15にする。15に値が加算される場合も同様。
②スイッチが押されていない間は現在保持している値を出力し続ける。
③リセットするようなスイッチがあり、押されると全ての桁が0になる。
を実現したいです。どうしたら良いでしょうか?初心者ゆえ上手く言葉にできていなかったらすみません。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
想像するにこんな感じの回路かなと思いますが...あくまでも模擬的な回路なんで、4ビットの信号を一つのゲートで処理してますが、そのあたりは脳内で4つのゲートに分離して考えてください。
あと、リセットの論理は同期リセットか非同期リセットか不明なので、入れてません。
論理検証をしていないので、この回路が論理的にあってるかどうかはわからないけど、動作は以下の通り。
swが0の時はDFFは値を保持する。oprが加算器への3ビットの入力で、加算器への4ビット入力はDFFからとっている。加算器の結果はsw=1であれば、その4ビットDFFに書き込まれる。加算器がオーバーフローしたとき(キャリー出力co=1)に、DFFには15が無条件に書き込まれる。一度15がDFFに書き込まれると、リセットするまでずっとその状態が続く。
input clk, rst, sw;
input [2:0] opr;
ADDER (.A(acc_q[3:0]), .B(opr[2:0]), .S(sum[3:0]), .C(co));
MUX (.S(co), .D1(4'b1111), .D0(sum[3:0]), .Z(mux_out1[3:0]));
MUX (.S(sw), .D1(mux_out1[3:0]), .D0(acc_q[3:0]), .Z(mux_out2[3:0]));
DFF (.clk(clk), .D(mux_out2[3:0]), .Q(acc_q[3:0]));
No.5
- 回答日時:
> 加算器と3ビットの入力との間にフロップを入れるべきということでしょうか?
いや、そういうわけではないけど、3ビット入力と4ビット入力それぞれがクロックに同期している必要があるから、一方がフロップに入っていてもう一方がフロップに入っていなければダメなんじゃないの、と思っただけです。
「加算結果がDFFに出力されたものがまたすぐに加算器の入力に入ってしまうためなのか」というのがわからない。4bのDFFというのは、加算器の出力を受けていて、かつ加算器の一方の入力にもなっているということですか? そして、3bの入力はどこか別のところから来て、加算器のもう一方の入力に入る?
いわば、アキュミュレータのような感じ?
もしそうだとした場合、15に達するまでは正常に動作するんですか?
No.4
- 回答日時:
>それでもやはりダメなものなのですかね……?
そういう事情なら即ダメとはいいません。
作りたい回路の入出力と機能を整理しましょう。
>現在保持している4ビットの値に、
保持された4bit の入力があるようにも読めますが、そうですか?
ここはちょっと無視して書いてみます。違ってたら指摘してください。
入力
1. 数値A 4bit
2. 数値B 3bit
出力
3. 数値X 4bit
押しボタンスイッチ
4.[実行](仮称)
5.[リセット]
仕様概要
1. 入力の数値A,Bが変化しても、数値Xは内部で保持してるので変化しない
2.[実行]を押した時に数値Xは更新され、保持される。
この時の値は 数値A+B の値となる。
数値A+B が値15 以上の場合は、出力X は値15(全4bitが"1")になる
3.[リセット]を押すと出力Xは値0(全4bitが"0")になる
ところで
D-FF を使ったようですが、出力の変化はクロック入力の立ち上がりエッジに起こります。
「クロックがエッジタイプ」などと呼びます。これに対して
「クロックがレベルタイプ」なラッチ(保持器)というモノも存在します。
後者はクロック入力が"0"の間は出力を保持しますが、
"1"の間は「入力が出力に筒抜け」になります。
なのでクロックを"0"に戻す前に入力が変化すると、保持内容が化けます。
ループして戻ってくるのに多少の時間がかかるので、これとの時間差によっては
期待通りになったりならなかったり、ということが起こりえます。
D-FF のクロックのタイプは大丈夫ですか?
No.3
- 回答日時:
4bitのデーターをFFに入れる時に4bitのORを取りクロゥクとして
使えば読込、ラッチは出来ます、それを加算して別のFFに入れる、そこまで
動作を確認して出来たら加算器の桁上げ信号でFFにセット入力が無ければ
1111を書き込むか考えることになります。
リセットが無ければ0000を書き込む方法を考えましょう、単純にFFの入力を
0000に落としてもいいし。(クロックは作る)
FFは入力と出力に2系統必要と思います。
なお論理は無視して話しています。
No.2
- 回答日時:
どんな回路かわからないのでなんともいえないけど、「加算器の一方の入力にDFFの出力を与えているため」ということは、3ビットの入力はフロップに入らずに直接加算器に入ってるってこと?
もしそうなら入力のタイミングに気を付けないとクロックとの同期がうまくとれないので、タイミングによっては動作したり動作しなかったりするかもしれません。
No.1
- 回答日時:
>クロックのタイミングによって失敗
成功する時があるなら「全然わからない」わけではないですね。
タイミングによって、
じゃなくて
「押しボタンスイッチのチャタリングを除去してない」のでは?
そもそもなぜそんなものを作りたいんです?
順序良く勉強してて課題が、というのなら回答を丸々得ようという
質問はダメですよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ビジネス・キャリア) 今時の派遣社員って仕事が出来ないだけじゃなく計算も出来ないのか? 8 2022/07/22 20:53
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
- Excel(エクセル) エクセル 自動計算 1 2023/01/30 13:28
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) 関数について 4 2023/05/26 11:22
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- 確定申告 確定申告について 4 2023/02/14 11:37
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
400V 3相4線式について...
-
パルスとレベルについて
-
クランプ回路
-
オペアンプの故障に関する質問
-
オペアンプ/反転増幅器/頭打ち
-
トランジスタによるシュミット...
-
コンパレータ回路に正弦波信号...
-
NPNとPNPの違いについて
-
ステレオ音声8分配回路の作成...
-
1bit一致回路、不一致回路、2bi...
-
オシロの入力インピーダンスに...
-
周波数特性の理論値を求めるには?
-
同一電圧値、異なる電源供給源...
-
3端子レギュレータ、トランジス...
-
ベース変調方式におけるLC共振
-
帰還量βの求め方
-
電気設備で使われるGCの意味...
-
アンプの音割れについて
-
近接スイッチの2線式と3線式...
-
電気回路について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
400V 3相4線式について...
-
近接スイッチの2線式と3線式...
-
パルスとレベルについて
-
EVT(GPT)の電圧比について
-
同一電圧値、異なる電源供給源...
-
NPNとPNPの違いについて
-
電気設備で使われるGCの意味...
-
3端子レギュレータ、トランジス...
-
バーンアウトについて
-
TLC555を用いた発振回路について
-
電流値(AC・DC)
-
流量計のパルス出力について
-
電気回路について
-
8ビット電文出力とはどんな信号?
-
60Hz誘導電動機を関東の50H...
-
オペアンプの故障
-
オシロの入力インピーダンスに...
-
分岐回路と分岐幹線の違いは何...
-
デルタ3相とスター3相
-
【ハードウェア 論理ゲート 論...
おすすめ情報
回答ありがとうございます。
あくまでもシミュレーション的なもので試しているのでチャタリングが原因ではなさそうです。
課題は課題なのですが、この回路はその中に組み込まれるべき一部分で、ここ2、3週間悩んだ末に答えが出せずこうして質問させていただいています。事情を話してしまうならば、入学してからずっといわゆるオンライン授業で、頼れる友人や先生がいないのです。
それでもやはりダメなものなのですかね……?その場合はこの質問はなかったことにしてまた自分で頭を悩ませます。すみません。
回答ありがとうございます。
3ビットの入力はスイッチを押すと3ビット分一気にそれぞれの加算器に入るようになっていて(フロップには入っていないです)、現在保持している4ビットの入力が直接加算器に入っています。
加算器と3ビットの入力との間にフロップを入れるべきということでしょうか?