前の5件 | -

今年もNT京都2017に参加しました [雑談]

NT京都2017_トップ真面目過ぎ_軽量版.jpg
去る3月19日に、京都西院春日神社において春の恒例行事となりました「NT京都」が開催されました。
今年は西院フェスと同時開催ということもあり、屋台や手芸などの出店もあって境内がたいへん賑わっていたのが印象的です。
例年は屋外展示はわりとひっそりになりがちなうえ、ブース出展をしているとご飯を喰いそびれることもしばしばありまして、境内の屋台は大変たすかりました。煮込みハンバーグバーガー旨かった。
来年も西院フェスと同時開催できると良いと思いますね。

設営日や当日の様子などはTwilogでまとめられているので、どのような雰囲気だったかを垣間見られればと。
#NT京都2017 前日&前日設営まとめ
#NT京都2017 当日以降まとめ

またニコ技WikiのNT京都ページにも参加した方のブログなどがまとめられていますので是非。
NT京都2017

ちなみにうちのブースは当日いきなり急用をねじ込まれる等のアクシデントもあり、全体的に準備不足で新製品の物販でお茶を濁すというgdgdっぷりでした。そろそろちゃんとした展示を作らねば‥‥。
IMG_-s3j8qi.jpg

なお、当日販売していた品については、PERIDOT CRAFTオンラインショップでも購入できますので、買い逃したという方はこちらもどうぞ。
shop_banner.png

VHDLいろいろ [FPGA]

今更感あるけども、VHDLで特定用途で便利な記述ネタを。

●LPMやMegafunctionを直接インスタンスする

library altera_mf;
use altera_mf.altera_mf_components.all;

を追加しておくと、コンポーネント宣言を省略してLPMやMegafunctionのマクロをインスタンスできる。
乗算やFIFO、DDRIOなどハードマクロにインスタンスしたい場合に便利。
パラメータのマニュアルはIP Catalogで表示されるコンポーネント名でぐぐれはIntelのpdfがでてくるけど、そのままIP Catalogでソースを出力して該当部分をコピペした方が早い。

そんなわけで、ソース公開するときにライセンス云々でやかましい類の人間に噛みつかれたくないときに重宝。別にQuartusPrimeのツール生成ソースでライセンス上も何の問題も無いのだけれど。

●リダクション演算を使う

use ieee.std_logic_misc.all;

を追加すると以下のリダクション演算ファンクションが使えるようになる。

and_reduce(std_logic_vector)
or_reduce(std_logic_vector)
xor_reduce(std_logic_vector)
nand_reduce(std_logic_vector)
nor_reduce(std_logic_vector)
xnor_reduce(std_logic_vector)

リダクション演算は引数のベクタの全ビットに対して論理演算を行うというもの。例えば and_reduce(data) とやると、dataの全ビットでand演算を行った結果が返される。つまり全ビットが'1'なら'1'が返る。
or_reduce(data)であれば全ビットが'0'の場合に'0'が返る。xor_reduce(data)では'1'のビットが奇数個の時に'1'が返る。
or_reduceは関係演算子でオーバーロードが行われるのでゼロ比較で代用できるけども、and_reduceの機能(任意長のビット幅で全ビットが'1'の判定)は少々面倒なので、パラメタラブルな記述をし始めると出番は多い。


NT京都2017開催! [雑談]

NT京都2017が今年も春のお彼岸中に京都西院春日神社にて開催されます!
NT京都2017_トップ真面目過ぎ_軽量版.jpg

NT京都とは
「おもしろい」と思った物を後先考えずに作ってしまう人達の作品70組超が京都西院に大集合します。毎年「訳わからんけど、おもろいな」と評判のNT京都は今年で8年目。普段はウケを狙って面白作品を開発しインターネットに動画投稿している人達(ニコニコ技術部)の有志が緩い雰囲気で運営しています。

開催日時
3月19日(日) 9:30〜16:30 入場無料

その他、詳しくはニコニコ技術wiki NT京都へ!

HDLソースに制約を埋め込む [IPコア]

QuartusPrimeではソースファイル側にハードウェアやタイミングの制約を埋め込むオプションがある。
一番よく使うのは、クロックドメインをまたぐレジスタのタイミングパスを切る指示。
これは一般的なフローではSDCファイルに記述するが、どのレジスタがタイミングを無視していいかなんてのはソースに一緒に書いた方がわかりやすい。

記述はHDLの中にaltera_attribute属性の文字列を埋め込むことで行う。これはQuartusへ合成指示を渡すオプションで、qsfファイルに記述するテキストと基本的には同一。
‥‥が、Verilogではアトリビュート記述は一行に納めないといけないので、複数行に分割しないとSDCに書き出すよりも遙かに見難いソースが出来上がるので注意が必要。

・Verilog-2001
(* altera_attribute = {"-name SDC_STATEMENT \"set_false_path -from [get_registers *sv_xcvr_pipe_native*] -to [get_registers *altpcie_rs_serdes|*]\"; -name SDC_STATEMENT \"set_false_path -to [get_registers *altpcie_rs_serdes|fifo_err_sync_r\[0\]]\"; -name SDC_STATEMENT \"set_false_path -to [get_registers *altpcie_rs_serdes|busy_altgxb_reconfig*]\""} *)


・VHDL
attribute altera_attribute : string;
attribute altera_attribute of rtl : architecture is (
"-name SDC_STATEMENT ""set_false_path -from [get_registers *sv_xcvr_pipe_native*] -to [get_registers *altpcie_rs_serdes|*]"";" &
"-name SDC_STATEMENT ""set_false_path -to [get_registers *altpcie_rs_serdes|fifo_err_sync_r\[0\]]"";" &
"-name SDC_STATEMENT ""set_false_path -to [get_registers *altpcie_rs_serdes|busy_altgxb_reconfig*]""
);


FM音源のDACインターフェース解析の更新 [IPコア]

以前やったFM音源のDACインターフェース解析(2015-11-06)のつづき。

どうもYMF262の波形がおかしいという話になり、実機を調べてもらったところ、fsが14.318MHz÷256ではなく14.318MHz÷288だった。
YMF262はDACとしてYAC512を接続するのだけども、このビット長が16bit×2なのでそれをデータフィールドと勘違いしてしまったようだ。実際には16bit長のデータの前に2bitのダミーがあり、全体では18bit×2のデータフィールドになっている。
でもデータクロックのデューティ比が25%とかいうのは一緒。あんまりピン遅延とかボード遅延とかシグナルインティグリティとかをとやかく言われなかった時代っぽい感じはする。

あと変態的な信号を発生するとして一部のスジでは名高いYMF297も実機を測定してもらったので、データとして追加した。一緒にYM2203も調べて貰えばよかったか‥‥。

DAC出力フォーマット_20160926.pdf
※9/26追記:YM2151のクロック極性が逆になってたので修正しました

あと、C140の動作クロックとDACクロックがいくつなのかご存じの方いましたら@s_osafuneまでリプお願いします‥‥<(_ _)>

system2.jpg

前の5件 | -