質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

832閲覧

4bitカウンタ回路のボードによる実装方法の検討

iface

総合スコア42

FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/06/04 10:48

編集2022/06/04 13:30

実現したいこと

今回、こちらのサイトを参照して、4ビットカウンタをXILINX社のPYNQ-Z1を使って実装を試みています。

発生している問題

実際に、IPインテグレーターによるシステム構築を行い、ボード上で実装してみました。
初期状態で4つのLEDが光っていましたが、Jupyter notebookで実行したところすべてのLEDが消えてしまいました。

イメージ説明

該当のソースコード

4ビットカウンタ回路のプログラム

Verilig

1module counter ( 2 input wire CLK, RST, 3 output reg [3:0] COUNT); 4 5 always @(posedge CLK or posedge RST) begin 6 if (RST) begin 7 COUNT <= 4'h0; 8 end else begin 9 COUNT <= COUNT + 4'h1; 10 end 11 end 12endmodule

テストベンチ

SystemVerilog

1`timescale 1ns / 1ns 2 3module counter_test(); 4 parameter STEP = 10; 5 6 logic CLK; 7 initial begin 8 CLK = 1; 9 forever #(STEP/2) CLK = ~CLK; 10 end 11 12 logic RST; 13 initial begin 14 RST =0; 15 #(2) RST = 1; 16 #(12) RST = 0; 17 end 18 19 logic [3:0] out; 20 counter cnt(.CLK(CLK), .RST(RST), .COUNT(out)); 21 22 initial begin 23 $monitor($time, " count=%b", out); 24 #(STEP*20) $finish; 25 end 26endmodule 27

シミュレーション図
イメージ説明

試したこと

FPGAのPL部分の動作周波数はデフォサイトルトで100MHzということで、超高速でLチカを行いっているのではないかと思いました。
この問題を改善するために調べていたところこちらのサイトを見つけました。
待ち時間を表す入力(CDIV)を入れてあげることで、jupyter bookでIPコアであるAXI GPIOにアクセスして、CDIVの値を書き換えてあげれば、実装時にLチカを確認することができると思いました。

しかし、CDIVを4bitカウンタ回路のプログラムにどのように組み込ませればよいかがわかりません。
ご教授お願いいたします。

補足情報(FW/ツールのバージョンなど)

Windows11

使用したボード:PYNQ-Z1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CDIVから0まで数えるカウンタを用意し、
もとのカウンタはこのカウンタが0のときにカウントアップするようにします


というか参考にしているというサイトにそう書いてあります。

回路の中身は、カウンタ2つとデコーダを組み合わせることで作れそうです。ナイトライダー回路の内部構造を上図に示します (リセット入力は省略しています)。
第1のカウンタは、待ち時間 CDIV まで数えたかどうかを判断する、CDIV 進のカウンタです。第2のカウンタは、左端の LED が点灯した時を 0 として、何回 LED が切り替わったかを数えます。左端の LED が最初に点灯してからもう1度点灯するまでの間には6回の LED 切り替えが必要ですから、第2のカウンタは6進カウンタとなります。カウンタ1が最後まで数え終わる (TC; Terminal Count) と、カウンタ2が有効 (EN; ENable) となりインクリメントされます。最後に、カウンタ2の値 (C; Count) を、デコーダ回路でLED の点灯/消灯に変換すれば完成です。
以上を Verilog HDL で記述すると、以下のソースコードが得られます。

投稿2022/06/04 21:08

編集2022/06/06 02:51
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2022/06/05 01:55

ちなみにILAを使えばオシロなくても実際の内部動作を追えます
guest

0

FPGAのPL部分の動作周波数はデフォサイトルトで100MHzということで、超高速でLチカを行いっているのではないかと思いました。

とお思いなら、オシロスコープを持ってきて実際の信号波形を見てみてはどうでしょう

ハードウエア周りをいじるなら、信号波形を確認できる環境を整えるのは必須ですよ

投稿2022/06/04 11:04

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iface

2022/06/04 13:35

コメントありがとうございます。 現在自宅で行っておりまして、オシロスコープを用意することが困難です。 シミュレーション結果を追加載せましたが、高速でLチカを行っていることが確認できるかと思います。
y_waiwai

2022/06/05 01:44

イマドキなら、中華サイトなんかで数万程度でオシロスコープを購入できます いろいろ調べたりする時間を考えればそんなに高くないと思いますよ #シミュレーションやらなんやら、っていうワケワカランもんを頼りにしても、って気はしますが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問