忍者ブログ
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month123456789101112131415161718192021222324252627282930Next Month
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

category :
PR
FPGA Gbps通信そろそろできそう
ここ数日は殆ど晴れなかったので、涼しい日々を過ごしていました。
暑いのは苦手なので、このままの温度感で夏が終わってほしい感じは
あります。


FPGAでギガビット・トランシーバーを用いてGbpsの高速通信に挑戦
している件、この連休を潰して黙々と取り組んだ結果、そろそろ動き
そうなところまで来ました。
てか まだ不完全ですが、なんかそれっぽく動きつつあります。


先週「タイミング制約がうまく行かない」と言っていた件は、ネットで
調べながらアレコレ試行錯誤していたら、良い感じに制約できたっぽい
です。(多分)

ポイントは、ロジックアナライザーでのデバック用に一時的に引き出して
いる信号線については「set_false_path」でタイミング制約から除外、
かつ、お互いに同期せず無関係なクロック信号は「set_clock_groups
-asynchronous」で外してあげると、うまく行くようです。
タイミング制約の条件をちゃんと書いてあげることで、タイミング解析
のエラーが防げ、コンパイル時間も短縮し、回路が動作する最高周波数
も向上しました。・・・知った後から思えば当たり前なのですが。
あとは、回路のクロック同期処理を見直したり、不必要に速いクロック
ラインは速度を一段下げたり、コンパイラの最適化設定を変更しました。

結果として、40MHz程度でしか動かないとされ大量にタイミング解析で
エラーが出ていたロジックが、解析結果からエラーが無くなり回路自体
も200MHzオーバーで動くようになりました。
そして、コンパイルするごとに挙動が変わる不安定さも無くなりました。
・・凄いぞ! 不安定なLSIが 5倍以上高速化して安定したぞ!
いやー、FPGAのタイミング制約って超重要なんだなぁ・・(痛感
またひとつ勉強になりました。


それ以外に行ったこととして、プロトコルのリセット処理を見直したり、
勘違いにより特定の信号の論理(0・1)が逆だったことが判明したので
修正したり、プロトコルの上位レイヤーのエラー処理やデータ転送処理
を修正したりしていました。

そんなこんなやったことで、なんか所々は動くようになりつつあります。
全体的にはまだまだ不安定で、不規則に初期化シーケンスがコケたり、
特定のコマンドの組み合わせが通らず途中でフリーズしたりするので、
まだ「動きました」「できました」とは言えない状況ですが、
ちょっと前のように「全く動かない」というような文鎮状態ではないので、
だいぶ望みは出てきた感じです。

そろそろ何を作っているのか詳細を公言(本ブログに記載)しても良い
かもしれませんが、XOPSと関わりのない他所で どのように活用・展開
していくのか未定なため、もうしばらく伏せておきます。


本一件は、XOPSの世界では全く使わない無縁な話で、XOPS以外の他所で
使うことを見込んでやっているわけですが、
昨今の世間の状況や、使用・活用先の近状、今後の自身の状況など総合的
に考えると、まさに『やるなら今しかない』みたいな状況なので、
短期集中で今勝負するしかありません。
今のところは まだモチベーションが保てていますが、(他の世界へ)
よそ見をして道を外れる前に終わらせたいと思っています。
category : 電子工作 comment [0]
FPGA タイミング制約と解析
もう2ヶ月以上経ちますが、FPGAでギガビット・トランシーバーを
やっている件、それっぽく動く(はずの)ロジックはできました。

トランシーバー(正しくはRXなのでレシーバーだが)のPHYの初期化
処理を変更し、クロック同期の処理を変更することで、『タイミングが
合えば』RXも信号が拾えるようになりました。
通信相手が不意なタイミングでリセット処理に入ると、こちらも追従
しなければいけないわけですが、
これが結構クセモノで、相手の信号にクロックを同期していると、相手
のリセットシーケンスをうまく検知できないようです。
なので、通信状態を常に監視し、相手がリセットらしき処理に入った
場合は、クロック同期の処理を変更するようにしました。
・・・・何を言っているか分からないと思いますが(^^;


そんなこんなで、ギガビット・トランシーバー自体はできたはず、
クロック同期処理もできたはず、プロトコルを扱うロジックも
基本的な処理は抑えたはずなのですが、やっぱり動きません(n回目

直接動作の関係ないところのロジックに軽微な修正を加え、コンパイル
(論理合成と配置配線)を掛け直すと、
変更するたびに動いたり動かなかったり、その動かない個所や不具合内容
も毎回変化する状態です。
実行後のタイミング解析結果を見ると、数ns(ナノ秒)レベルのタイミング
違反が多数出ているので、実デバイス上に実装する際にロジックの速度・
タイミングが要求速度に満たしていないようです。

正直言って、どうして良いのかよく分かりません。
一応クロックラインのタイミング制約は掛けているはずなのですが、
そもそも正しいのか、制約が不足しているのか、記述が間違ているのか、
確信がなく よく分かりません。
今まで扱っていた数十Mbpsクラスの通信であれば、適当なタイミング制約
で良く、ぶっちゃげ制約ゼロでも問題なかったのですが、
Gbps単位の通信となると、しっかりと制約を加えてコンパイルしないと
まともに動かず、動いても「まぐれ」で動いているだけになってしまいます。
・・・まさに今がその状態(汗

これも「n回目」と言った感じですが、
FPGAの参考文献でも、HDLのロジック設計やツールの基本操作については
初心者向けに丁寧に説明していることは多々ありますが、コンパイル時に必要
なタイミング制約やタイミング解析に関する解説やノウハウは殆ど紹介されて
いません。
まともにFPGAを使うならば、必須な技術だと思うのですが・・。


こりゃもう、いつになったら まともに動くようになるのか、分からねぇな。。
category : 電子工作 comment [0]
FPGAのギガビット・トランシーバー 残り数歩?
世間ではオリンピックが始まったようですが、まだ今年は全く
観れてないです。
ここまで観てない年・回は初めてではないだろうか・・?

今回の週末は4連休だったので、作業が大きく進みました。
このタイミングの4連休は実に嬉しい&有難い。


FPGAでギガビット・トランシーバー実装を試みている件、
プロトコル部分も最低限動作するロジックを載せられました。
これで最低限の動作確認ができるはずだったのですが・・・、
例のごとくうまく動きません。(デスヨネー....)

書いたロジックにも細かいバグが複数あったので、バグは全部潰した
はずなのですが、
入力(RX)のデータが かなりの頻度で化けるのです。。
むしろ、正しいデータで取れるほうが少ない・・・(;;

自分の書いたロジックが間違えているのではないかとか、自分が
用意したケーブルが悪いのではないかとか、色々疑いを掛けて回り
ましたが、どうも入力におけるクロック同期がマズイようで。
相手が送ってくるデータを正しいタイミングで同期して信号が拾えて
いないようで、データが化けまくっているみたいです。
・・・これは、PC上のシミュレーションでは分からんわ(^^;
同じデバイス(FPGA)でループバックする分には、同じクロック
信号を共有して同期するので全く問題ないのですが、
他のデバイスと通信しようとすると、途端にダメになります。

おそらく、先月6月頃にやっていたギガビット・トランシーバーの
PHYあたりがおかしく、そこのクロック設定や初期化処理に問題
があるのではないかと思っていますが、
その目星が正しい保証はどこにもなく、現にちょっと設定・初期化
処理を変えると、まともに動かなくなる状況です。
んー、困ったなぁ・・・。
ギガビット・トランシーバーのPHYを今一度勉強し直さないといけない
かもしれませんorz


全体を通してみれば、残り数歩でゴールではないかと思っており、
ここまで来たならば最後までやりたい気持ちもありますが、
なかなかキツイです。。。

まぁ、今回が特別な訳でも何でもなく、十数年前から今まで新しい
こと(XOPSへの関係性問わず)に挑戦してきて、"余裕"だったこと
なんて一度もないんですけどね。
こういう、常に新しいことにチャレンジしていく姿勢は大切で、
決して間違えてはいないと確信しています。
category : 電子工作 comment [0]
FPGAにGbps通信するプロトコルを載せたい
最近このブログは、日曜日の深夜に更新するのが通例になっていますね。
別に意図しているわけではないのですが、土日・休日にやったことを
書きたくなるのが、たまたま日曜日深夜なのかもしれません。
あるいは、迫りくる月曜日への現実逃避か?(^^;


6月上旬から始めて そろそろ2ヶ月経とうとしている「FPGA×ギガビット
・トランシーバー」ですが、トランシーバー自体は概ね載せ終わりました。
Gbpsクラスが測れる高価(数百万円クラス)な測定器なんて持っていないので、
波形が見れるわけではなく実感が湧かないですが、理論上は動いているはずです。

次のステップとして、通信プロトコルの実装に取り掛かっています。
前にも書いた通り、Gbps単位で0・1が高速に送られるだけでは何ら意味が
ありません。
今回ターゲットにしているデバイスを動かさないといけないので、
その対象のデバイスに合わせてプロトコルを実装しなければいけないわけ
です。
これがまぁ何ともクセモノで、単純にクロックに同期して適当にコマンド・
データを送れば済むわけではなく、複雑な実装が必要なため手を焼いて
います。
いや、事前に何となく想像はしていましたが、やはり厄介で難敵です。


オシロやロジアナでは解決できない領域に差し掛かったため、プロトコル
アナライザーを入手しました。
もちろん、新品で最新機種を買うと何百万円クラス(下手すると1千万円越え)
で個人では手に入れられないので、安い型落ちの中古品ですけども。
探し回って手に入れたわけではなく、ふと(意外な場所で)相場より格安で
売られていたところを発見し、殆ど迷いなく買いました。
これがロジアナ並みに大活躍です。これはスゲェ。。
他所で類似の機材を触ったことがあるので、使い方は何となく分かりました。

それにしても、まさか自宅にプロトコルアナライザーを備えることになる
とはな・・・(汗
でも、本当に買ってよかった。2021年の「買って良かったものランキング」
に堂々ランクインすることでしょう。

実は、FPGAのチップ単体も先日発注してしまいました。
本当はもう少し後でも十分だったのですが、世界的な半導体不足で必要なIC
(FPGA)が必要な時に手に入らなくなる可能性が否定できなかったので、
購入先に在庫があるうちに注文しました。これもこれで結構高いorz
後になって「スペックが足りない・・」みたいになったらどうしよ(震え声

オシロやロジアナは別件で買ったものなのでノーカウントとしても、
FPGAボードといい、関連の専門書といい、プロトコルアナライザーといい、
FPGAチップ単体といい、既に数十万円レベルでお金が掛かっており、
かつ、かなりの日数と手間をつぎ込んでいるので、もう後に引けない
「一大プロジェクト」になってしまいました。まさに大勝負案件。

本件の結末がどうなるか、私にも分かりません。
半年後ぐらいにはどうなっていますかね。
全部まとめてゴミ箱にダンクシュートされていなければ良いのですが(冷汗


全く関係ない別件ですが、
そう言われてみれば、7月10日はOpenXOPSプロジェクトを正式に立ち上げて
から、7周年だったのですね。
「えっ? もうそんな経ったの?」って感じですが。
今年は特に何もしませんでした。OpenXOPS関係で何か期待されていた方が
いたならば、申し訳ございませんでした。
category : 電子工作 comment [0]
FPGA高速通信で低レイヤーが動かない
7月に入りました。ちょっと遠くまで徒歩で買い物に出かけたら、
帰宅した頃には全身汗だくになりましたorz もう夏ですねぇ。

そして、もう2021年も半分終わったのですね。
「あけおめ」とか正月気分で言っていたのが ついこの前に感じますが、
もう半年後には、また「2022年あけおめ」って言っていると思うと、
時の早さに恐怖すら感じる今日この頃です。


FPGAでギガビット・トランシーバーをやっている件ですが、案の定
プロトコルの実装に苦戦しています。

まずは低レイヤーの実装から取り掛かっていますが、接続直後に行う
一番最初の初期化処理に転んでおり、まったくうまく行っていません。
何かが間違えているようで、正しくステートマシンが動作していない
ようです。

FPGAの動作を観察するのも苦労しています。
基板上のLEDなどの表示では、目視確認は容易なものの測定はできず、
GPIOから信号を出力してオシロスコープで見ようとしても、2chしか
なく長期間ログが取れるわけでもないので非効率で、
FPGA内にロジックアナライザー(ロジアナ)を仕込んでも、PC側の
ソフトの操作が悪いのか、目当ての場所でうまくトリガーが掛けられず
イマイチな感じで、
どうしたものかと困っていました。
そんな状況でしたが、ふと今年4月末頃にロジアナ(物理的な測定器)
を試しに買っていたことを思い出し、GPIOに信号を出力してロジアナ
で観察してみると、思った以上に狙い通りの波形が分かりやすく取れ
ました。これは良いぞ(^^
次からロジアナでの解析を中心にやっていこうかと思っています。
てか4月末に買ったロジアナは、元はパワエレの制御回路の解析・
デバック用に仕入れたもので、決して高スペックな代物ではなく、
言わば安物です。
当初の予定で使われることはなく箱の中で寝ていましたが、まさか
役に立つとは思ってもいませんでした。
本当に買っておいてよかったわ。


土日や平日の深夜を殆ど潰して取り組み続けた結果、一週間ごとに
0.5歩づつ程度は進んでいるように感じますが(※そう信じたいだけ)、
いくら何でも当初の目論見より進みが遅いのが明らかで、こんなペース
で開発していたら、あっという間に1年・2年経ってしまうという焦る
気持ちもあります。
まぁ他の人に言わせれば「別に自分のペースでゆっくりやれば?」
みたいな話で、納期やスケジュールにシビアに追われているわけでは
ないものの、
結局 私は1人しかおらず分身できるわけでもないので、あんまりFPGAの
ギガビット・トランシーバーばかりやっているわけにはいかないのです。
XOPS含め、ほかにやりたいことも多数あるし・・・。

ここはサッサと終わらせて次のフィールド・レベルに行きたいのですが、
なかなかうまくは行かないですね。参ったなぁ。
category : 電子工作 comment [0]
[1] [2] [3] [4] [5] [6] [7]

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP