« 2018年3月 | トップページ | 2018年5月 »

2018.04.30

Cosmo-Z Miniを出荷しました

本日、Cosmo-Z Miniの出荷の初出荷を行いました。

どうしても4月中に出荷したかったので、昨夜から泊まり込んで作業していました。

Cszmini

Cosmo-Z Miniは、ZYNQを中心に、14bit 125MHzのADCを4chと、14bit 125MHzのDACを2ch搭載した計測&信号処理装置です。

Web経由で波形が見れるだけではなく、FPGAによってリアルタイムに信号処理をしたり、ADCで計測した値からDACへフィードバックができるというものです。

Cszmini6

sun

この製品は、特電にとって新たなスタートの一歩となります。

いままでの製品とは違い、基板むき出しではなく、写真のようなアルミのケースに入っています。特電は今まで評価基板という類のものをいろいろ作ってきたのですが、これからはこういう最終製品も手掛けていきたいと考えています。

Cszmini2

Cszmini3

付属品とともに箱に梱包し、出荷です!

Cszmini4

この装置が皆様の研究のお役に立ちますように!

Cszmini5

| | コメント (4)

2018.04.29

改版したCosmo-Z Miniの性能

改版したCosmo-Z Miniにコネクタ等を取り付け、実験開始です。

まず、信号発生器を使って周波数特性を測ってみました。

Cosmo-Z Mini旧基板は30MHzくらいでゲインが下がり、その後も2倍程度の傾きで下がっていますが、Cosmo-ZとCosmo-Z Miniの新基板は50MHzくらいまではフラットな特性が出ています。

Cszf

旧基板はアナログフロントエンドのOPアンプにTHS4521を使っていましたが、今回の改版でTHS4520に戻した結果、Cosmo-Zと同等の性能になりました。

それから、オーディオアナライザで作った100kHzで綺麗な(ひずみ率-100dB以下の)正弦波を入れた結果、-90dB以上のひずみ率を達成できました。

Np1104a100khz

サンプリングした波形をFFTした結果、高調波は微塵も生じておりませんでした!

旧基板で測ったときのスペクトラムは下の図の-60dB程度だったので、OPアンプの型番が1つ違うだけでここまで変わるのかと思ってしまいます。

Cszmini_old

happy01

ただ、CORDIC法+DDSで作った波形でDACを試したところ、そこまで良くはなく、-70dBくらいかなという感じでした。

1104a23k

最大の懸案であった、アナログ性能については大きく改善した(というかCosmo-Zの仕様に戻った)といえます。

| | コメント (0)

2018.04.27

Cosmo-Z Miniの新しい基板が届いた

実装屋さんからCosmo-Z Miniの基板が届きました。

4月18日に出図して、23日に生基板ができあがり、27日に実装完了です。

とにかく急ぎました。

懸案だった「ケースに干渉せずに入るか」という問題も無事クリア。

Cszmini_board

これから動作検証です。

一発で動くといいのですが・・

| | コメント (0)

2018.04.26

CORDIC法で作ったDACの波形がきれいに・・ならない

CORDIC法とDDSで正弦波を作って、それをDACから出力したのですが、正弦波の頂点のところで少し欠けているような気がしていました。

リサージュ図形にしてみても、下の図のように、頂点のところに少し減った値が出ています。

Cordic_err

この回路はCORDIC法で-0x20000~+0x20000の正弦波を作り、上位14bitを出力するという方法で正弦波を出力していました。

上位14bitというのが[17:4]を取っているため、0x20000が出力されるときにオーバーフローして、最低値が出力されるため、値が下がるようになってしまうのではないかと思ったので、乗算器を入れて最大値でも0x1ffffを超えないようにしました。

Cordic_circuit

ところが、結果は予想に反するものでした。

ひげのようなものが、逆に増えてしまいました。

Cordic_err2

| | コメント (0)

2018.04.24

セキュリティキャンプでJTAGの講演を行います

セキュリティキャンプの講師をやらせていただくことになりました。

今年から創設されたフィジカルトラックというところで、「JTAG(ジェイタグ)の原理と活用」というテーマで講演させていただきます。

下記のページの

https://www.ipa.go.jp/jinzai/camp/2018/zenkoku2018_program_list.html

のページのD5の講義です。

JTAG(ジェイタグ)はいわゆる「工場出荷時の検査モード」で、ほぼすべて(概ね32bit以上の組み込みCPUを含めて)のハイエンドなCPUやFPGAに備わっています。これを使うと、CPUを強制的にデバッグモードに入れて動作をオーバーライドし、本来のプログラムとは違うプログラムを走らせることができたり、FPGAに書き込まれている回路とは異なる動作をさせることができます。しかも、ROMを書き換えず痕跡を残さずに・・ このように便利なテストモードですが、ハッキングの手段としても使うことはできるので、市場に出る製品では無効にされていることも多いでしょう。本講義ではそんなJTAGの原理と波形の解説をはじめ、組み込み機器でよく使われているARMプロセッサ(具体的にはRaspberry Pi3やそこら辺のルータ)やFPGAをターゲットに、LSIの内部構造へアクセスする簡単な実習を行います。

どんな講義にするかはまだ未定なのですが、1コマ3時間くらいしかないので、基本的な説明は事前課題で勉強してもらうことになると思います。

講義本番の時間では、手近なRasPiなどのマイコンボードをJTAGアダプタにして、JTAGのプロトコルを喋らせて、CPUの内部のデバッグ用レジスタのアクセスしたり、FPGAに書き込んだりして、皆で遊びます。

JTAGの低レイヤーのプログラムは講師が事前に用意しますので、参加者がゼロから作る必要がないようにします。参加者は「どのデバッグレジスタに何をするか」という、JTAGの中ではアプリケーション層といえる部分をいろいろ試してもらいたいと思います。

実際に手を動かして試して、CPUやFPGAの中をいじくって、解説して、可能ならばセキュリティを破る、そんなゆるいセミナーにしたいと思います。

| | コメント (0)

2018.04.23

Cosmo-Z Miniの生基板が出来てきた

先週の水曜日に発注したCosmo-Z Miniの生基板が出来てきました。

6層基板です。

Np1110a_top

Np1110a_bot

今回改良したコネクタ部分と、ADC、DAC部分。

Np1110a_1

Np1110a_2

| | コメント (0)

2018.04.20

XILINXの二次元バーコードの読み方

一昨日のブログの続きです。

XILINX FPGAのシルクのうち、温度・スピードグレードは今後表示されなくなるっぽいので、この二次元バーコードを読めるようにする必要があります。このバーコードはXilinx 2D Barcode Markingsというそうです。

QRコードリーダでも読めるようなのですが、2A0QQ123123みたいな英数字が出てくるだけです。これをWebサイトに入力するという方法もあるようなのですが、一番簡単なのはXILINX GOアプリをスマホにインストールすることです。

XILINX GOは、Andoroidのスマホなら、GooglePlayに向かって「ザイリンクス」と叫べばインストールされました。

早速、起動してみます。

Xgo1

うーん。何だこれは!?

広告やニュースが配信されてくるのでしょうか?

とりあえず左上の「」みたいなところをクリックすると、画面が左にスワイプして、Device Lookupというのがありました。

Xgo2_2

ここをクリックするとログイン画面になります。

Xgo3_2

ここでLogin / Request Accessを押して、Vivadoとかのダウンロードにも使うXILINXのアカウントのユーザIDとパスワードを入れるのですが、いままでのアカウントを普通に入れてもだめで、二次元バーコードの利用ということで登録をしなければならないようです。(アカウント名自体は変わりません)

また、登録には15分くらい時間がかかるようで、登録してすぐに使えるようにはなりません。

15分くらい待ってからログインして、ユーザ名とパスワードを入れると無事に起動しました。

Xgo4

この緑の部分を目的のFPGAのバーコードに合わせます。かなり感度がいいアプリなので、カメラに入ったFPGAがバシバシ認識されていきます。

認識されると

Xgo5

と、このように無事にスピードグレードやロット等が表示されました。

sun

なんでこんな仕様になったかと考えてみると、XCN16014に

トップ マーキング情報の一部 (4 行目のスピード/温度グレード、SCD 情報) を削除することで納期短縮および製造処理数の拡大を実現します。

と書かれているので、想像ですが、FPGAはパッケージに納めた後、速度などを検査して速いものに3を、遅いものに1のマーキングをしているのではないかと思います。だとすると、シルクの印刷を2回行わなければならないので工数がかかるのかなと。

それが、最初のシルクの時点で個体識別番号を印刷しておいて、スピードグレードのようにパッケージング後にわかるものはデータベースで紐づけすることで、4行目のシルクを印刷する工数を省略するということなのかもしれません。

| | コメント (0)

2018.04.19

新しいオンラインショップの稼働開始

本日から、新しい特電オンラインショップが稼働を開始しました。

http://www.tokudenkairo.co.jp/shop/

Tokuden_shop

自社サイトとの親和性を高めるため、完全に社内で内製しました。

少しずつ進めていた案件なので5か月くらいかかりましたが、これで、製品紹介ページに「カートに入れる」ボタンを作ったり、会社のWebサイトに、カートアイコンを出したりといったことも(将来的には)できるようになります。

「5か月もかけなくても、ショッピングカートくらいいくらでもあるだろう?」

と思う方がいるかもしれません。

たしかに、Make●●とか、おちゃ●●とか、カラー●●など、今日日ショッピングカートくらいいくらでもあります。

しかし、

  • BtoBに対応している
  • デザインが完全に自由にできる
  • 販売データを自社で管理できる
  • レスポンスが早い
  • 自社サイト内に埋め込める
  • 技術情報のページを作ってまとめておける

というのはありませんでした。

BtoB対応というのは、あるショッピングカートのシステムでは、「月額〇千円」みたいな安い値段を謳っていても、お客様名には個人名しか入れられず、会社名を入れられるようにするには別料金で30万円とか平気で言われました。

それから、どれも市販の既存のショッピングカートのシステムは、自社サイト全体をショッピングカート運営会社のサーバ内に移さなければならない感じで、それが嫌でした。

それに、特電の商品は1ページで全体像が説明できるものではなく、技術情報やチュートリアル、ダウンロードページなど、たくさんの情報が必要です。

そうすると、技術情報を記した自社ページと、ショッピングカートのサイトとを別のドメインにすることになり、ドメインの遷移が発生してしまい、ユーザビリティが悪くなります。

sun

ということで、PHPとMySQLを駆使して自社で開発することにしたのでした。

これで自社サイトをEC対応にできるようになりました。

| | コメント (0)

2018.04.18

XILINX FPGAのシルクがなくなった!?

実装業者さんから、

「FPGAのスピードグレード-1Cのものと、-2Cのものがシルクが同じで区別がつかない」

との連絡がありました。

現在実装中のArtix-7基板の18台のうち、15個のシルクに温度・スピードグレードの表示がなくて、どれがどれだかわからないとのことでした。

2dcode_1

もしかしてスピードグレードを間違って購入してしまったのかと一瞬青くなりましたが、実装業者さんに送ってもらった写真を見て、たしかにシルクがなくて絶望な気分になりました。

ただ、よく見るとFPGAに2次元バーコードが印刷されていることに気が付きました。

2dcode_2

今まではあった1Cとか2Iとか3Eの表示がありません。

AR#67513XCN16014よると7シリーズ以降のデバイスでは、段階的にシルクの表示が変わっていって、XC7Aデバイスでは2017年の5月に生産されたデバイスからは温度・スピードグレードを表示しなくなるという方針のようでした。

これは困った。

このバーコードを何とか解読しないといけません。

続き

| | コメント (0)

2018.04.17

Cosmo-Z Miniの新基板の設計が完了

新製品「Cosmo-Z Mini」の基板再設計も佳境を迎えました。

まずは基板全体像。

Np1110a_1

アナログフロントエンドのOPアンプを周波数特性のよいTHS4520に変えて、等長配線を行い、

Np1110a_2

大容量の積層セラミックコンデンサを電源コネクタのそばに置いたり。

Np1110a_3

入力に大きなコンデンサを入れたのは、電車の中でモバイルバッテリで運用する際に、WiFiが動いたらリブートしたことがきっかけとなっています。

sun

本当は大容量なコンデンサは、タンタルコンデンサでやりたかったのですが、タンタルコンデンサはショートモードで壊れるという理由もありますが、それ以上に紛争鉱物」とか「3TG」といってアフリカのコンゴで採れる鉱物を使った製品や材料は使うな、という国際圧力があって、最近は使いにくいのです。

使いにくいといっても、別にDigikeyでも普通に買えるのですが、大手企業では仕入れた材料や機材に3TGが含まれているかを、取引先に調査させて報告を出させるような暇な部署もあります。

タンタルコンデンサのタンタルがどこで採れたものかはわかりませんが、コンゴで取れたタンタルでなくても、タンタルが使いにくいという世の中の風潮です。

有機アルミポリマーでも、チタンニオブでも、積層セラミックコンデンサでも大容量なのはありますが、やはりタンタルには敵いません。

はぁ、タンタルが気兼ねなく使えるようになってほしい。

sun

さて、出来上がった基板の図です。

まずは表面と裏面。

Np1110a_top Np1110a_bot

次は電源層とGND層

Np1110a_vcc Np1110a_gnd

最後に内層。

Np1110a_mid1 Np1110a_mid2

全6層です。

この基板は水曜日に出図して、土曜日に出来上がってくる予定です。来週は実装工場の予定も確保したので、4月中に完成して、出荷可能できそうな気配です。

| | コメント (0)

2018.04.16

オンラインショップのリニューアル準備中

現在、特電のオンラインショップが危機的状況になっています。

オンラインショップはShopformerというオープンソースのものを利用して作っていたのですが、2011年に導入したシステムなのでいろいろと動作が怪しくなってきていました。

Shop

それでも修正を繰り返しながら使ってきたのですが、最近になって「クレジットカード決済ができない」という不具合が発生するようになりました。

もうだめだ。

そこで、DBとPHPを駆使して全面的に作りなおすことにしました。幸い、特電では「オンライン見積システム」というのを作っていたので、それを改良して、見積の延長として注文まで行えるように改良を行っています。

「オンライン見積システム」は、このような見積書をWebやPDFで作成するものです。

Web_estim

この先に、お客様情報を入力するフォームを作って、

Web_estim2

Web_estim3

何とか「ご注文内容の確認画面」まで作りました。

Web_estim4

決済まであと1画面。ふぅ。

PHPで$_SESSIONとか$_REQUESTとか使いながらベタに作っています。結構大変です。

自由度が高く、既存のプログラムと親和性が高くて、こういうフォームアプリが簡単に作れるフレームワークがあるといいのですが。

| | コメント (0)

2018.04.15

Cosmo-Z Miniの基板再設計開始

Cosmo-Z Miniの基板再設計をはじめました。

Cosmo-Z Miniというのは、4chのADCと2chのDACを搭載した計測装置で、ZYNQを搭載しているためリアルタイムな信号処理ができるというものです。

Cszmini

まずは、現在の基板の状況を確認しましょう。

Cszmini_default

この基板にはいくつかの問題がありました。

  • 基板の端まで部品が実装されているので、ケースに納まらない
  • 使用しているOPアンプの帯域が狭く、125MHzのADC特性を活かせない
  • FPGAのVCCIOを1.8V(HRバンク)で使うと、LVDSのDIFF_TERMが使えないので、外部に終端抵抗が必要となる
  • その他細かいこと
    • リセットボタンがほしい(開発中の問題として)
    • USB電流制限ICの1番ピンがつながっていない
    • Etherコネクタの共通線(?)に電源をつなぐのを忘れていた
    • MicroSDカードソケットを大量に在庫している品種を使いたい
    • MicroSDカードのCD端子の使い方を間違っていた
    • HDMI出力にモニタをつなぐと電源が逆流してくる
    • 基板を切断するつなぎ目の場所が、コネクタの下にあると作業しづらい
    • LEDが基板の端にないと、ケースに入れたときにモニタランプとしての役割を果たさない
    • SDカードにもパスコンを入れる
    • 電源電圧の瞬間的な低下に対処するため、基板全体に大きなコンデンサがほしい

また、展示会に出してみて「ディジタルI/Oがほしい」というご意見をいただきました。

sun

現基板で最大の失敗は、ケースに収まらないこと

Conflict

↑のように、ケースと電源ICがぶつかってしまいます。

sun

これらの修正点を反映すべく、基板を設計しなおすことにしました。

使用しているタカチのケースの図面(これを解読するのは結構難しいのだけれども・・)を読むと、基板の端から4mm程度は使わないほうがよさそうなので、端っこにあった電源回路などを少し内側に移動しました。

Np1110_space

また、現在の基板でUSBコネクタの裏にある積層セラミックコンデンサ

Usb_cap

を基板の内側に移動させて、空いたスペースにJSTのZHコネクタを2個設けて、4bitのディジタルI/Oを2個設置しました。

Cszmini_dio

FPGAのクロック入力端子にもつながっているので、外部クロックを利用することもできるようになるはずです。

sun

また、アナログフロントエンドのOPアンプに、低消費電力のTHS4521を2段にして使っていますが、これがどうも歪率が悪い。

100kHzで-60dBくらいしか出ません。

Cszmini_100k

高域のゲインが足りていないものと思われます。

Cosom-Zと比べてみると、Cosmo-Z(THS4520)のほうは50MHくらいでゆるやかに落ち始めるのにたいし、Cosmo-Z Mini(THS4521)は30MHzくらいから急激に落ち始めています。

Cszmini_f

THS4520のゲインは600MHzくらいまであるので、メガヘルツ帯域での歪率も低く抑えられるはずです。

というわけで、低消費電力よりも正確なアナログキャプチャを取るため、THS4520に戻すことにしました。

火曜日に出図して基板製造開始、来週の月曜日には実装開始の予定です。今月中に納品できることを目指します。

| | コメント (0)

2018.04.10

CORDIC法とDACで正弦波を出力してみた

開発中のZYNQ搭載ADC/DACボード「Cosmo-Z Mini」にCORDIC法の正弦波発振器を入れて、DACから出した波形の特性を測りました。

まずは、オーディオアナライザをつないでひずみ率を測ったら、-80dBとのことでした。

Cordic_dac

オシロで取った波形を示します。

Cordic_dac2

見た感じではきれいな正弦波が出ています。

この波形を同じボードのADCで取り込んで波形表示させてみたり、リサージュ図形も描かせてみましたが、目で見た範囲では問題はありませんでした。

Wave23kLissa23k

FFTで解析してみると、ひずみ率は-60dB弱くらいです。ちょっと残念です。おそらくADCのほうのひずみ率が悪いのでしょう。

Fft23k

sun

周波数を230kHzにしても生波形やFFTはあまり変化が見られませんが、

Wave230k Fft230k

リサージュ図形は汚くなってきます。

Lissa230k

ところどころ飛びが出てきます。OPアンプの帯域が足りないのかもしれません。本番用基板では、OPアンプを変えるのが必須といえます。

sun

最後に、周波数を2.3MHzにしてみます。

2倍や3倍の周波数のひずみ率はそれほど悪化していないのですが、2次3次高調波の周辺に汚い高調波が広がって見えてきています。より高次の高調波がエイリアシングで見えているのでしょうか。

Wave2m Fft2m

ただし、リサージュ図形はそれほど汚くはなっていません。

Lissa2m_2

まとめ

  • CORDIC法とDDSで正弦波を作り、DACから出力した
  • オーディオアナライザで測ったひずみ率@20kHzは-80dB
  • ADCで取り込むと-60dB弱になる
  • OPアンプの帯域が足りてなさそう
ということです。

| | コメント (0)

2018.04.05

ZynqberryにUbuntu14を入れた

ZynqberryにUbuntu14を入れることができました。

今まで、ZYNQのLinuxでLinaroのUbuntu 12.11を入れて、14.04にアップデートすると、GUIでのログインができなくなってしまうという問題がありました。ログインループというやつで、有効なユーザ名とパスワードを入れても最初のログイン画面に戻ってしまうという問題です。

この問題を回避してUbuntu 14を入れるには、最初からLinaroの14を入れるのが一番です。そのやり方は、基本的には小冊子「ZYNQのLinuxが動くまで」

Zb1

に書かれているとおりなのですが、以下の点が異なります。

  • https://releases.linaro.org/archive/14.10/ubuntu/trusty-images/alip/にあるlinaro-trusty-alip-20141024-684.tar.gzを取ってくること
  • tarのオプションは--strip-components=1 にすること
  • インストール後、デフォルトではIPv4がないので、ひとまず/etc/sysctl.confを書き換えてIPv6を無効にすること。
  • 自分で/etc/network/interfacesを書くこと

これでネットワークがつながるようになります。

Zynqberryubuntu14_1_2

また、小冊子のとおりにセットアップすることで、無線LANも無事につながりました。

Zynqberryubuntu14_2

GUIを快適に使うには、日本語化の設定が必要です。

apt-get install language-pack-ja
update-locale LANG=ja_JP.UTF-8
apt-get install fonts-takao-Mincho
apt-get install fonts-takao
dpkg-reconfigure keyboard-configuration

最後のコマンドを実行した後、Generic 105-key (Intl) PC → Japanese → Japanese → The default for the keyboard layout → No compose key

と操作します。これで日本語化も完成です。

Zynqberryubuntu14

無線化したZYNQベースのLinuxマシンに、HDMI出力とマウスとキーボードをつないで動くようになりました。

sun

このLinuxの構築に必要な情報の元(Ubuntu12の段階)は、Zynqberryスタータキットに付属の小冊子にすべて記載しています。

Zynqberry_starterkit_web

ZynqBerryスタータキットはこちらです↓↓

https://www.trenz.jp/product/zbstart/

| | コメント (0)

2018.04.04

XDMAコアでの割り込み発生方法

XILINXのPCI Expressコア(XDMA)を使って割り込みを発生させる方法を理解したので、忘れないように書いておきます。

Xdmaieq1

XDMAというのはXILINXのPCI Express IPコアで、スキャッタギャザーDMAに対応した超絶便利なコアです。

このコアにはusr_irq_req[0:0]やusr_irq_ack[0:0]という端子があります。このビット幅は1~16までIPコア設定画面の中で設定できます。つまり、最大で16本の割り込み入力が使用できるようになります。

Xdmaieq2

sun

さて、XDMAコアにある割り込み関連信号はusr_irq_reqとusr_irq_ackだけです。

この使い方を簡単に説明するち、ユーザ回路が割り込みを発生させたい場合は、usr_irq_req[0]をアサートします。

Xdmaieq6

PCI Expressでは割り込み信号の状態をホストとカードで同じ値を保持する機能はなく、メッセージパケットやメモリライトを使って、L→HまたはH→Lに遷移したことを通知します。

usr_irq_ackは、XDMAコアがホストPCに割り込みメッセージを送信した時にアサートされます。ackという名前ですが、ホストPCのOSやドライバが受け取ったことを示しているわけではありません。あくまでもXDMAコアの中で返しています。

sun

さて、ドライバが何もしていないときにいきなりusr_irq_reqをアサートしても、usr_irq_ackは帰りません。割り込みを発生させる前に、ドライバがBAR1の0x2004に1を書いて、割り込み許可をしておかなければなりません。

実は、XDMAコアはBAR1にいろいろな設定レジスタを持っていて、

Xdmaieq3

この中の0x2000~0x20A4にIRQ関係のレジスタがあります。

Xdmaieq4

割り込み許可関係のレジスタは0x04,0x08,0x0cと3種類ありますが、0x04のが読み書き可能な値が書かれたレジスタの本体です。

Xdmaieq7

0x2008はセット専用、0x200cはリセット専用です。これらのレジスタは、1を書き込まれたビットが許可されたり、禁止されたりするというものです。読み出してからビットORして書き込みという手順が必要ないので、割り込み処理ルーチンの中で操作するのに向いています。

(読み込んで、ビット操作して書き戻すと、その間に他のビットの状態が変わっている可能性があるから)

したがって、ドライバの割り込みセットアップルーチンでは、BAR1の0x2004に1を書いて、割り込みusr_irq(0)を許可するようにします。

割り込み許可マスクが設定されていれば、usr_irq_req[0]から200ns前後でackが返ってきます。その様子をMITOUJTAGを使って波形を観測しました。

Xdmaieq5

また、BAR1の0x2040と0x2048にUser Interrupt Requestと、User Interrupt Pendingというレジスタがあります。

Xdmaieq8

Request (0x2040)のほうは割り込みが発生したときに立つフラグです。Pending (0x2048)というのは、usr_irq_reqが入ったけど、割り込み許可マスクが設定されていないため、発行することができない待ち状態にあるときに立つフラグです。

sun

さて、割り込みが発生するとusr_irq_ackが返ってきますが、ユーザ回路はこのackでusr_irq_reqを下げてはいけません

ユーザ回路はusr_irq_reqをアサートしたら、ドライバがユーザ回路で作ったレジスタにアクセスして、割り込みを解除するような操作をするまでusr_irq_reqを保持し続ける必要があります。ackだけでusr_irq_reqをデアサートすると、ドライバが割り込みを処理しようとしたときにすでに割り込みが取り下げられていて、割り込みが発生しなくなってしまいます。

正しいやり方は、ユーザ回路の中にユーザ用の割り込みコントロールレジスタを作り、ドライバの割り込み応答ルーチンでそのレジスタを操作して解除することです。

下の図をもとに、正しい割り込みの処理方法を説明します。

Xdmaieq9

① 割り込みが発生し、ISRの中で0x2040を読んで、どこかのビットで割り込みが発生しているかどうかを調べます。

② 割り込みが発生していたら、その値を0x200cに書き込んで、一時的にそのビットの割り込みを禁止します。

③ DPCルーチンの中でユーザ回路で作った割り込み制御レジスタに書き込んで、割り込み発生の原因をクリアします。

④ BAR1+0x2008に値を書き込んで、そのビットの割り込みを再び許可します。

実際に作成したレジスタと、回路の例を示します。

Xdmaieq10

Xdmaieq11_2

ハードウェアからの割り込み要求は、usr_irq_reqにそのまま入れるのではなく、ユーザが作った回路の中に割り込みレジスタを設けて、その割り込みコントロールレジスタからusr_irq_reqを操作するのがポイントです。

sun

この割り込みの検証にはCosmo-K+(コスモケイ・プラス)を使用しました。

Cskp

CosmoK+は、PCI Expressと40GbpsのQSFP、DDR3メモリ、USB3.0が搭載されたKintex-7ボードです。

http://www.tokudenkairo.co.jp/cosmok/

この割り込みができるサンプル回路と、デバイスドライバは下記のページからダウンロードできます。

http://www.tokudenkairo.co.jp/cosmok/download.html

Xdmaieq12

| | コメント (0)

2018.04.03

Artix-7ボード製造終了のご案内

特電Artix-7ボードはUSB3.0を搭載し、IN/OUTともに300MByte/sを超える速度でホストPCと通信ができるボードで、累計500台を超える台数を販売してきました。

皆様に長い間ご愛顧いただいてきた当ボードは、使用していた電源コネクタ(極性統一ジャック)の製造終了により、また代替品も入手できないため、やむを得ず、製造を終了させていただくことになりました。

現時点での在庫と現在製造中のロットを合わせた下記の数量が4月3日時点での最終的な在庫数量となります。

  • 型番:TKDN-ART7-1 XC7A100T-1CSG324C 搭載  ・・在庫6台
  • 型番:TKDN-ART7-2 XC7A100T-2CSG324I 搭載  ・・在庫8台
  • 型番:TKDN-ART7-3 XC7A100T-3CSG324E 搭載 ・・在庫5台

遅くとも今月中、早ければ1週間程度で完売となる見込みですので、Artix-7ボードをご検討されている方は、ぜひともお早目にご注文いただければ幸いです。

なお、今後、基板の改版して販売を再開する計画は現時点では具体的には立っておりません。 もし、改版を行うことになった場合でも、開発にそれなりの期間を要する見込みです。

急な連絡となってしまい誠に申し訳ございませんが、皆様の需要にできる限りお応えするよう努力してまいりますので、何卒よろしくお願いします。

ご要望やお問合せがございましたら、

info@tokudenkairo.co.jp

までメールにてお寄せください。

| | コメント (0)

« 2018年3月 | トップページ | 2018年5月 »