- 締切済み
Verilog-HDLによる論理回路設定
verilogについての記述でまったくわからないので教えてほしいです。 n面ダイスを設計することになり、n面ダイスとは、n個の面を持つサイコロで、高速にカウントを行うカウンタによって実現できるものです。特徴として、以下のものを持ちます。 1.入力startが1のときダイスの目が動き始め、入力stopのときダイスの目がストップする。 2.入力set信号と同時に入力されたデータで、ダイスの面の数をnに変更できる。 以上の条件を満たす記述について、教えてほしいので宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- JYUZA
- ベストアンサー率29% (54/184)
時間経ってしまったのでもう解決したでしょうか。とりあえず回答します。 そこまで複雑に考えなくてもいいような気がします。カウンタ一つとn設定用レジスタ1つで良いんじゃないかと・・・ 例えば、rst=0でcount=0で、もしstart=1ならcount=count+1、stop=1ならcount=count、さらに追加条件でcount=nならcount=1になるようなカウンタを作成する。それとは別にset=1の時n=valueになるようなレジスタを一つ作成する。それで出力をcountにすれば良いような気がしますがいかがでしょうか?
- JYUZA
- ベストアンサー率29% (54/184)
まずはあなたの考えを教えてもらえればそれについて回答します。ここでは課題の丸投げは禁止ということなので・・・ ただ、冷静に考えれば簡単ですよ。苦手意識が先行しているようです。どんな信号を用意すればいいか、また、それらの信号の相関関係はどうなってるかを整理してください。start=1ならカウンタが動く。stop=1ならカウンタが止まる。set=1ならn=dataになる。それを言語で表わすだけです。
お礼
すみません,なんか返事の仕方を間違えてしまいました。 考えは上記の通りです。 よろしくお願いします。
補足
回答ありがとうございます。 自分の考えを書かなくてすみませんでした。 一応,本などを読みそれを参考にして記述したのがあるのですが,内容がよくわかりません。以下に貼ります。 module timer(clk, rst, strobe, start, value, timeout); input clk, rst, strobe, start; input [3:0] value; output timeout; parameter STOP = 1'b0; parameter TIME = 1'b1; reg state_reg; reg [3:0] value_reg; reg [3:0] time_reg; always @(posedge clk or posedge rst) begin if (rst == 1) begin state_reg <= STOP; end else begin if ((state_reg == STOP) && (start == 1)) begin state_reg <= TIME; end else if ((state_reg == TIME) && (timeout == 1)) begin state_reg <= STOP; end end end always @(posedge clk or posedge rst) begin if (rst == 1) begin value_reg <= 4'b1111; end else if ((state_reg == STOP) && (strobe == 1)) begin value_reg <= value; end end always @(posedge clk or posedge rst) begin if (rst == 1) begin time_reg <= 0; end else if ((state_reg == TIME) && (timeout == 1)) begin time_reg <= 0; end else if (state_reg == TIME) begin time_reg <= time_reg + 1; end end assign timeout = (time_reg == value_reg); endmodule n面といわれてるのですが,ビットでの表し方がわからず入力信号を4ビットで記述しています。 ほとんど本を参考にしたので,もしかしたらまったく違うことについて記述をしているのかもしれませんが,お願いします。
お礼
度々ありがとうございます。 詳しく教えていただき助かりました。まだわからない部分もありますが、これらを参考に頑張ってみたいと思います。