【新時代!】PSoC スレ その11
■ このスレッドは過去ログ倉庫に格納されています
PSoC = Programmable System on a Chip 公式サイト:Cypress(PSoCのメーカー) ttp://www.cypress.com/ 開発ツール「PSoC Creator」:for PSoC3(8051), PSoC4 and PSoC 5LP(CortexM3) ttp://www.cypress.com/psoccreator/ 講習会:日本サイプレス PSoCワークショップ案内ページ ttp://www.cypress-japan.co.jp/openworkshop/ 【PSoC1(M8C)開発ツールベンダ】 「ImageCraft Inc.」 (ICCM8C C tools for Cypress PSoC / M8C) ttp://www.imagecraft.com/ 「HI-TECH Software」(HI-TECH C for the PSoC Mixed-Signal Array) ttp://www.htsoft.com/ ※注:HI-TECH SoftwareはMicrochip (PICマイコンのメーカー)に買収され PSoC向けコンパイラは2009年9月末で販売・サポート終了 【参考図書】 「PSoCマイコン・トレーニング・キット」(ISBN:9784-7898-3833-7) ttp://www.cqpub.co.jp/hanbai/books/38/38331.htm 「改訂 はじめてのPSoCマイコン」 (ISBN:9784-7898-4215-0) ttp://www.cqpub.co.jp/hanbai/books/42/42151.htm 「はじめてのPSoCマイコン」(ISBN:9784-7898-3443-8:こちらは絶版) ttp://www.cqpub.co.jp/hanbai/books/34/34431.htm 洋書:「Designer's Guide to the Cypress PSoC」(ISBN:9780-7506-7780-6) ttp://www.amazon.co.jp/dp/0750677805 洋書:「The Beginner's Guide to PSoC Express」(ISBN:9780-9790-3440-4) ttp://psoctraining.com/ 【PSoC取扱店】 ・共立電子 http://eleshop.kyohritsu.com/ ・パステルマジック http://www.pastelmagic.com/ ・秋月電子通商 http://akizukidenshi.com/ ・ストロベリー・リナックス http://strawberry-linux.com/ ・Digi-Key (日本語サイト) http://www.digikey.jp/ ※注:注文時、使用目的・使用者申告欄に日本語で記入すると発送が遅くなる場合あり 急ぎの場合は英語で記入することをお勧めします 前スレ 【新時代!】PSoC スレ 其の十 http://uni.2ch.net/test/read.cgi/denki/1295760504/ >>582 必ずしもPLDだけを使うとは限らないんじゃない? WARPがどんな風に落としているのかは知らないけど。 ルネのDRPもUDBと似ていて、ダイナミック・リコンフィグレーション を使って動的にデータパスを切り替えるようなやり方をしている。 そちらはC言語をベースにした言語のソースコードからVeriloが 生成されて、そこからDRPのステート切替(UDBでいう、デコーダのRAMに 相当だね)になっていくっていう感じだったな、確か。 だから、Verilogで書いたらデータパスユニットが使われないということ でもないと思うよん。 ただ、Warpがどのくらい賢いのかは・・・知らんけど。 >Verilogで書いたらデータパスユニットが使われないということ >でもないと思うよん。 ・・・・っていうか、datapath configuration tool から吐き出される verilog ソースは、datapathがインスタンシエーションされた形で 出てきて、それに周辺ロジックとか接続を書き加える形になってるから 書き加えた部分から新たにdatapathが生成されることはない (書き加えた部分は、正確に言うとPLDとPLD-datapath間、その他の 結線に落ちる) ひな型からdatapathのインスタンス消して、代わりに>>578 が書いてる ようなこと書いたら、自動的に datapath 使って合成してくれるのなら 「verilogで書いたらUDBにマッピングされる」って言っていいと思うし そうなって欲しいんだけどね UDBはプログラムカウンタを持たずPLDで命令を選んで実行させるわけか エニアックもそんな仕組みで動いていたけど普通の構造に改造されて性能が6分の1に落ちたとかいうから 割と優れものなのか 569あたりから見ててトラ技の記事とか読んでたら やっとこさUDBの使い方が分かってきたよ。 普通のFPGA verilogで書いたことあれば、こんな感じでやればいいのか。 ・とりあえず、reg [7:0] A0, A1, D0, D1, F0, F1; が定義されてるって考えて それから >>578 みたいな RTL(風)にやりたい動作を書いてみる。 ・それを見ながら、configuration toolを使ってマイクロコードを定義。 verilogソースを吐き出させる。 (定義できない動作があったら、上に戻る) ・state の遷移部だけ抜き出して、吐き出された verilog ソースに書き加える。 A0<=D0 とか if(A0>=D0) みたいなのの書き方の代わりに 対応するビットをセットしたり判定したりしないといけないのが ちょっとプリミティブかな。 どうせ、やりたいことはVerilogで記述するなら、それがどんな風な ロジックになるのかは気にすることも無いと思うけどね。 Cのソースがどういうオブジェクトになるのかを知らなくても 別にどうってことはないのと同じでね。 アホか? Cは高級アセンブラ、どんなコードが掃き出されるか分かる。 VelrrlogもRTL、どんなロジックになるか分からないでどうする? まあ、弁護すると588は、verilogで記述したものがどういう 物理構造(Logic CellとかPLD)にマップされるかは知らなくても いいってこと言いたいんだろうね。 でも、PSoCのUDBについては587が書いてるように やりたいこと書いたverilogソースがそのままUDBに落とせるわけじゃないんで 的外れな表現ではあるな。 多分、588はPSoCのUDBを実際に使ったことないんじゃないか? もし使ったことあって書いてるとしたら、表現について普通の感覚とは距離がある方だな。 >>589 >Cは高級アセンブラ、どんなコードが掃き出されるか分かる。 最適化のおかげで、必ずしもそうとは限らない。 別に機能が実現できるなら、それがどんな風に実現されるのかを 気にすることはない。 >590みたいに何とか他人を見下そうとして、妄想を膨らませるような ビョーキな人間はそうでもないのかもしれないけど。 蒸し返すようなこと書いてスマンが・・・ >別に機能が実現できるなら、それがどんな風に実現されるのかを >気にすることはない。 これは同意するんだが、verilogで書いたものが「自動的に」UDBを使って 合成されるわけじゃないから、56x〜あたりからの話になってるんだろ? 話をすりかえるなよ datapathにマッピングしてくれないから効率悪いだけで verilogで書いたコードはUDBのPLD部分には自動的にマッピングしてくれるけど みんな勘違いしてる? 俺の理解不足? そのとおりだよ それを、どうしても 「verilogで書いたコードはUDBに自動的にマッピングしてくれる」から 「プリミティブなことは知らなくてよい」って 言いたい人が一人いるだけ ちなみに、UDB Editor使えば一応一つのツール画面でUDB全体を 設計できるし、マイクロコード?もA0 = A0 + 1みたいな感じで 設定できて、より高位レベル設計とは言えると思うけど それでもプログラミング言語で言えばアセンブラレベルだから Cのオブジェクトがどうたらって例えとは無縁の世界だと思う datapath みたいな構造ちゅうかハードロジックは、普通のFPGAにも入ってたら 有効じゃないか、って思うんだけどどうなのかな? 実際、DSP Blockみたいなのは、まあ似たようなもんだし UDB Editorって古いPSoC Creatorにはついてなかったの? 2013年のトラ技の記事には Datapath Config Toolの解説しかなかったので 「こりゃオレにゃ無理だ!」って思って触らなかったんだけど、UDB Editor だったらそんなに敷居は高くないな ちょっと変わったマイコンのプログラムをアセンブラで組むくらいの感じで しょせん最大8ステップ(本当は8命令なんだろうけど)しかないから そんな大規模なこと書けるわけじゃないし何とかなる cprintfでfloatの表示を試してるんだけど うまく動かない… float fa = 10.0; float fb = 3.0; char * cp; int stat; cp = ftoa( fa/fb, &stat); cprintf("%s\n"); // 3.3333332 と表示 cprintf("%f\n", fa/fb); // 0.333333 と表示 local.mkにfpm8cとllpm8cを追加して、 putcharはTX8_SendDataで送って、return cしてるんだけど、不足ありますか? ちなみにcy8c27143、designer5.4です。 わお ちゃんと投稿されない 0.3333... て出るところ fb/fa としちゃってませんか? といいたかったのでした >>601 アドバイスありがとうございます。 fa/fb->10.0/3.0となってます。 数字を変えてみると整数部が単純に0で出力されているようです。 fa=10.0, fb=1.6とかで試すと整数部が0、続いて少数部は正しく表示されました… lstのcprintfアセンブラを読めればいいんですがアセンブラ苦手で笑 最初のcprintfの引数にcp渡してない というのはないですよね? 確かめてみました こちらでは 3.3333332 3.333333 と表示されます 割り算が狂っていたりcprintfがおかしなことを しているということではなさそう ポインターcpが保持してるのは、cp = ftoa( fa/fb, &stat); の計算時につかったワークメモリのアドレスでしょ? ワークメモリの中身って、他のライブラリ関数の処理でも変更されるんじゃないの? それと、statのアドレスに文字列を書き込みたいのは分かるけど、確保されてるメモリは文字列ようじゃなく整数値用だから、あふれてるよね。 なんか、他の変数を破壊してそうな危なげなリストに見える >>603 >>604 検証ありがとうございます 自分の環境の問題なんですかね… 1つ目のcprintfの引数にcp抜けてましたね 職場から書き込みできないので手写し したときにミスりました汗 >>605 ftoaはpsoc designerに用意されてるやつなので 使い方はこの通りです。 変換した文字の先頭が戻り値で、statには 成功失敗が入ります。 何に困ってるか書いていなかったのが いけなかったですね >>599 の2つ目のcprintfのように、 floatの計算結果を%f指定で出力しようとすると 整数部が0になってしまうので 同じ様な経験されてる方がいないかなと 思い質問させていただきました。 すると…… 浮動小数点数の型が誤認されてるってことはない? 単精度倍精度の取り違えみたいな感じの。 倍精度浮動小数点数はPCと違ってあんまり使わないと思うけど、どっかでスイッチ指定を間違えてて許容設定になってるとか? >>607 勉強になります。 そういうことがあるんですね 調べながらになりますが、確認してみます! ImageCraftのコンパイラはfloatとdoubleは同じ32bit精度です。 >>609 整数ではあるまいし、浮動少数で「32bit精度です」とは言わんやろ。 言うなら「32bit形式」やで。 精度で言えば、雲泥の差があるわw >>610 32bit単精度と書きたかったのです。 いいわけ。 UDB Editor で、ちょっと複雑なステートマシン書こうとしたんだけど 絵で描くの大変だってことが分かった。 verilog のひな型作るのにだけ使って、後は verilog 単独でやるのが いいのかな・・・ >>612 当たり前かな。 図で回路を書くのが面倒だから、HDLが作られた。 状態遷移も、絵を書くより遷移表が楽だし。 まあそういうことだね XilinxのISEには昔、"StateCAD"なんてのが付属してたんだけど かなり前からなくなった 絵で描いたら簡単という幻想の一つにはフローチャートとかあったけど いいかげん気づかないもんかね モジュール間の接続は回路(ブロック)図 モジュール内の論理の記述はHDLってことになるんじゃないかな >図で回路を書くのが面倒だから、HDLが作られた Verilogはシミュレーション用だし、VHDLは仕様書用であって、 論理合成を前提に作られたものではなかったのでは? >>617 その拡張された理由は? ところで、VHDLが仕様書用って俺の認識とは違うが… Wikipedia で「米国国防総省は、業者の納品する機器で含むASICの動作の 文書記述のためにVHDLを開発した」ってなってるように、他でも同様に 書かれてるし、異説も見たことないんだけど、何か独自の説をお持ちですか? >>619 VHDLはVHSIC計画から産まれた筈なんだが? 「VHSIC計画から(最初は仕様記述のための言語として)産まれ その後 simulation, synthesis 用途にも使われるようになった」 というふうに一般には解説されてるから 「VHSIC計画から産まれた」ってことと 617さんの書いた「VHDLは仕様書用であって・・・」というのは別に 矛盾しないでしょ? >>620 は「VHDLはVHSIC計画から産まれた」=「VHSICを合成するための 記述言語として作られた」って勘違いしてたのかな VHDL =(VHSIC HDL)だから、言葉だけから考えたら、そういうふうに 誤解してもおかしくはないけど、元来は仕様記述に作られた言語って いう話は、どこにでも書いてあると思うけどな データパスのFIFO通してポート(ピン)に8ビット出力とか 逆に入力とかってできないですか? データパスからDMA使ってGPIOに転送するしかない? 無いかな?つか、DMA使うのがお手軽でいろいろできて便利。 8bitの加算処理をするときの使用リソースについて、 カスタムコンポーネント関連の資料を見るとPLDだと5個(マクロセル20相当?)使うと書いてあり、 実際にVerilogで書いてみるとマクロセル8個ほど使用で、 回路図でゲートロジックを使って8bit加算器を作ってみるとマクロセル1個しか使わない 一体何が正しいんだろう HDLの書き方が悪いのかね それか、コンパイラ/シンセサイザーの設定が悪い、制限がかかってる等々 >>627 よく分かってないんだけど、PSoC の DataPath内 PLDに「マクロセル」って 概念はあるの? >>629 データパスじゃなくて、UDB内に2つPLDが入ってて、PLD1つにつき4個マクロセルがあると理解してる。 データパスはUDB内にある、PLDとは別の要素かな >>627 >回路図でゲートロジックを使って8bit加算器を作ってみると マクロセル1個しか使わない マクロセル1個だと出力1ビットしかとれないから これは明らかに間違いじゃない? カスタムコンポーネントのほうは、単純な加算器じゃなくて アキュムレータとかついてるんじゃない(想像だけど) >>632 うーん、8ビットの数値同士の加算して、その通りの数値がステータスレジスタで読めるのは実機確認済みなんだよね… 回路図では8ビットのバス使ってやってるんだけど、これは1ビットずつ順番に処理してるってことになるんだろうか。 「回路図」のはPLDだけじゃなくてデータパス使ってる ということではないかと・・・ もちろん、それがPSoC本来のやり方なんだけど ゲート回路組み合わせたら場合によっては勝手にデータパスが使われるってこと? それはちょっとないと思うんだけど・・・まあ色々試して確認してみるかな PSoC使った基板を量産したら、個体によってアナロググランドが安定しない症状が出て、 対策としてダンピング抵抗を入れるって上司が言っているのですが、対策としてはアリなんでしょうか。 もうね、危急の課題ですよ。 >>635 その「回路図」でやったっていうのが、すべて自前で(マクロとか ライブラリ使わずに)1からゲートレベルで回路描いたのなら データパスを勝手に使うとかはありえないけど、同時に1ビット 加算器を8回まわして8ビット加算器にするとかもありえないんじゃ? 意図的にそういう回路を描く場合でも、1ビット加算器以外に シーケンサとして3FF(=3マクロセル)は必要なはずだから、最低でも 4マクロセル(1PLD)は必要だと思う (もちろん、他に8ビットデータの入出力に必要な部分が必要な はずだけど、それはどういうふうにしようとしてるるのかは 書いてる範囲からは分からないから、それは別にして) >>636 アナロググランドのノイズが、そのダンピング抵抗を入れようとしている信号のスイッチングに連動しているならアリ。 ただ、どんだけ脆弱なグランドなのよ? ベタグランドにしてないの? グランドでなく、Vcc側の問題でないの? デジタル電源とアナログ電源の分離が出来ていれば、対策がダンピング抵抗にならない筈。 >>638 サラリーマンとしては、バカな上司の指示でも無視するわけにもいかない 「あなたに指示されたとおりやったけどダメでした、だからあなたの 責任です」って言い分が通る職場なら指示どおりやって、上司を追い落とす きっかけにすればいい >>638 アナロググランドといっても,PSoCの機能であるオフセット電圧出力のことで, 2.6Vに設定しています。おそらくオペアンプを用いた機能だと思うのですが。 オフセット電圧のことを一般的にはアナロググランドと言わないのかもしれません。 今回そのアナロググランドを広めに設計したところ,デジタルグランドとの間に 容量を持っちゃったみたいです。ちなみにデジタルグランドはベタです。 アナロググランドに50Ωほどの抵抗を直列に入れると,出力が安定します。 >今回そのアナロググランドを広めに設計したところ,デジタルグランドとの間に >容量を持っちゃったみたいです。 その程度の考察で、ダンピング入れちゃえ、とりあえず50Ω 入れたら収まったからいいやなんていう程度なら、 素直に上司に従っておくが吉。 自分ならそんな不確実なことはしたくないけど、どうせ 俺には縁もゆかりもない製品の事だからどうでもいいわ。 >個体によってアナロググランドが安定しない症状が出て そもそも、その「アナロググランド」の電位は何処を基準にしているのか というところから考えた方がいい。 そもそもの原因は出力ピンの吸い込み電流が多すぎるせいかも LEDを点灯するときは吐き出しで >>644 そのアナロググランドに流込むノイズが、PSoC出力バッファの帰還抵抗経由で入力側に回っているかもよ。 それならダンピング抵抗で効果がありうる。 641では 「アナロググランドといっても,PSoCの機能であるオフセット電圧出力のこと」 「アナロググランドに50Ωほどの抵抗を直列に入れると,出力が安定します」 って書いてるから、そういうことではなさそう むしろ、「アナロググランド」に何つないでるものが問題かも 原因がよく分からないから対処も正しいかどうかわからない。 そんな怪しげな製品が今世の中に出ようとしているのか。 >>647 > そんな怪しげな製品が今世の中に ちゃうちゃうw >>636 によると「PSoC使った基板を量産したら、個体によって」と、既に量産中やでw 試作評価を手抜きしたんやなw 「アナロググランドが安定しない」というからにはどこかしらに基準と なっている電位があるはずで、それがどこなのか分からなければ どうにもならんわな。 「何処の電位に対して安定させたいのか」というのが不明なんだから。 電流がどう流れるのかということすらきちんと考えてない感じだね。 >>649 基準電位は,こちらのページのグローバル・リソースのRefMux設定にあるように, BandGapを使用しております。 ご指摘があるとおり,私の知識や考慮が不足していたために発生した不具合です。 PSoCを使用している人間が,社内に私含めて2人しかおらず, こちらのスレで様々なご指摘を頂けますと助かります。 >>651 趣味でやってるならともかくとして、仕事でやろうっていうなら、 そんな何処の馬の骨かわからないような奴の書いたblogなんて あてにしたら駄目よ。 ちゃんとデータシートなどの原本を見て仕事しなくちゃだめ。 >>650 だから、「安定しない」とかいうけど、どこに対する電位なのかっていう ことをきちんと考えないと駄目よ。 だいたい2ちゃんなんて便所の落書き場であって、まともな議論だの Q&Aだのをするような場所じゃない。 PSoC4Lって、総合的なリソースの大きさだと5LP上回ったりするんかな 素直にCypressのサイトでアカウントを作り、MyCaseで質問。 個人的には、デジアナ混載のICのGNDは、積極的にアナログGNDとデジタルGNDを分けて使うのではなく IC内部のアナログコンポーネントのGNDがどの端子に繋がっているかを示す程度のものだと思っている。 ADCのVrefのGNDをアナログGNDと一致させておかないと、結局何のAD変換値を取得しているのかわからない。 ゼロ電位付近をAD変換するにしても、生のアナログ電圧を変換するのは稀で、大抵オペアンプ等の出力になる。 で、単電源オペアンプなら出力に信頼性が無いし、正負電源オペアンプなら負電位が正確にAD変換されるか 注意しなきゃならない。 ずいぶん前に買ったPSoC4200の600円のキット PSoC Creator入れて確認してみたら アナログブロックのオペアンプは単機能だったと判明 反転増幅はPSoC3か5を買わないといけないわけね 1つの基板にPSoC4を5つ載せて、1つのコネクタからプログラミングできる? JTAG プロトコルがデイジーチェーンサポートしてることと JTAGピン使ったプログラミングプロトコルがチェーンしたJTAGをサポートしてるか どうかは何の関係もないがな。 てか、PSoC4に載ってるような SWD は原理的にチェーン不可。 >>661 >>659 はJTAGもSWDも前提にしてないみたいだから可能なんじゃないの。 SWDでも外部回路次第で可能だろうし。 MiniProg3のJTAG説明欄に The Joint Test Action Group (JTAG) standard interface is supported by many high-end microcontrollers, including the PSoC 3 and PSoC 5LP families. This interface allows a daisy chain bus of multiple JTAG devices. The MiniProg3 supports programming and debugging the PSoC 3 and PSoC 5LP devices using JTAG, through the 10-pin connector only. とあったから、PSoC 3 and PSoC 5LPは「チェーンしたJTAGをサポートしてる」と解釈してもいいの? >>664 this interfaceというのは、JTAG standard interfaceのことだよ こんな感じかね JTAG standard interfaceはPSoC 3やPSoC 5Lなどの多くのハイエンドマイクロコントローラーをサポートしています。 JTAG standard interfaceは複数のデバイスを芋づる式(デイジーチェーン)に接続できます。 MiniProg3は10ピンコネクターを通してのみJTAGを使っているPSoC 3とPSoC 5Lのプログラミングとデバッグができます。 >>666 441じゃないのに名前欄に441が入ってた... デバイスレベルでチェーン接続に対応してても開発ツールレベルで 対応してるかどうかは別問題だろうけど、PSoC Creator は 複数起動できて、デバッグターゲットも選択できるから いけそうな気もする >>668 元レスの質問はISPのことじゃないの? それなら、ブートローダーが外部プログラムをダウンロードすればいいだけ。 始めてやるんだが、これがベスト? 秋月 PSoC評価キット CY3210−PSoCEVAL1 いまオペアンプを使って加算器二つ、微分器一つ、コンパレータ一つ、ボルテージフォロワ4つぐらいの回路を作っています PSoc を使えばもしかして一つのicで実現可能でしょうか? ボルテージフォロワは、出力バッファで済ませるとして、 加算二つに微分1つ、コンパレータ一つなら入るかもね。 >>672 コンパイラはPSoC Designerに付属してくる。買う必要は無い。 >>675 そうなんだね。ありがとう。 秋月で600円のキットを注文した。楽しみ。 Psocのオペアンプってスイッチトキャパシタじゃないの? だとすると帯域は そんなに伸びないのでは? せいぜい1Khz程度では? えー?んなわけなくない? そんなのオペアンプとは呼ばない ACB ブロック アナログ コンティニュアス ブロック これはオペアンプだよ >>676 http://akizukidenshi.com/catalog/g/gM-09432/ PSoC 5LP Prototyping Kit ¥1500のこれも買った方が良い。 切り離せば¥600のヤツのデバッガとしても使える。 http://akizukidenshi.com/catalog/g/gM-08446/ こっちにも給電用にmicroUSB欲しかったなぁ・・・コスト的な問題だったらパターンだけでも。 USBの延長ケーブルじゃいかんの? Lawson100で売ってるよ PSoC1とPSoC3/4/5LPは分けて話をしないとややこしや。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる