今月号の特集は「作りながら学ぶマイクロコンピュータ」ということで、ALTERAのCPLD上でPIC12F508を実現してしまうという企画です。xilinx派の私としては、ALTERAには手を出さんとか思っていたのですが、おもしろそうなので、ついついボードを買ってしまいました(共同購入の世話役をされたhamayanさん、ありがとうございます)。とか言いつつ、以前1chip MSXを買っていたので2台目です。
運の悪いことに、ちょうどALTERAが論理合成ツールQuartusのバージョンをあげたばかりなので、誌面で説明しているのと多少食い違いができています。新しい8.1では、8.0以前に必要だったライセンスファイルが不要になっています。
RTLはトラ技のページからダウンロードできます。プロジェクトごと入っているので、適当なフォルダーにコピーするだけで合成したり、ダウンロードしたりできます。まだ全部試したわけじゃないですが、モノによって7.0のプロジェクトだったり、8.0のプロジェクトだったりとバージョンの違うプロジェクトが混ざっています。7.0のものは互換性がないらしく、変換するというダイアログがでます。
Releaseというフォルダーにはいっているプロジェクトは7.0のものです。508Emu.map.summaryというファイルを覗いてみるとLEの数は1023になっています。8.1で論理合成しなおすと1070と47LEだけ増えています。
いつものVeritakでシミュレーションしてみました。ModelSimというフォルダーにはいっているのが、シミュレーション用で、MAXII固有の機能を使っていません。テストベンチもはいっています(tb_M508Emu.v)。
一箇所だけエラーが出ました。508Emu.vの47行の
mTimer0 tmr0(reset,fosc,Q,opt[3:0],wr_tmr,db_out,tim_out);
です。ポート数が一致しませんというエラーです。一つ足りないみたいなので、最後に「,」をつけてエラーを取りました。
mTimer0 tmr0(reset,fosc,Q,opt[3:0],wr_tmr,db_out,tim_out,);
修正後はtim_outの後に「,」がついています。出力ポートに何も書かないと単に出力先がなくなるだけです。ModelSimではエラーにならないのでしょうか?
きれいに1クロック1命令になっていて清清しいです。
とりあえず書いてみたLEDチカチカです(<が全角になってます)。
Quartusって、`defaultnettypeが書けないのでしょうか。エラーが出ます。
11/28追記 エラーが出て当たり前です。正しくは`default_nettypeです。間に「_」が入ります。
やってみたいのは、Xilinx系への移植です。といってもVeritakでシミュレーションできたから、余裕でできそうです。
やっぱり、Verilog好きです。
来月号の特集は「ディジ/アナ混載IC活用研究」というタイトルで、PSoCの特集です。
500kHzサンプリングUSBオシロスコープの製作というのもおもしろそうです。最大8個のAVRを2μsずつずらして動作させる、と書いてあります。
って、CPLDの記事以外、全然見てません。
- PSpice活用ワンランク・アップ!が最終回です。
- 後閑さんのMP3プレーヤ作成記事が出てます。VS1011eを使っています。
昨日、トラ技を買ってきたのに、遊ぶのに手一杯で、書くのは今日になってしまいまた。
運の悪いことに、ちょうどALTERAが論理合成ツールQuartusのバージョンをあげたばかりなので、誌面で説明しているのと多少食い違いができています。新しい8.1では、8.0以前に必要だったライセンスファイルが不要になっています。
RTLはトラ技のページからダウンロードできます。プロジェクトごと入っているので、適当なフォルダーにコピーするだけで合成したり、ダウンロードしたりできます。まだ全部試したわけじゃないですが、モノによって7.0のプロジェクトだったり、8.0のプロジェクトだったりとバージョンの違うプロジェクトが混ざっています。7.0のものは互換性がないらしく、変換するというダイアログがでます。
Releaseというフォルダーにはいっているプロジェクトは7.0のものです。508Emu.map.summaryというファイルを覗いてみるとLEの数は1023になっています。8.1で論理合成しなおすと1070と47LEだけ増えています。
いつものVeritakでシミュレーションしてみました。ModelSimというフォルダーにはいっているのが、シミュレーション用で、MAXII固有の機能を使っていません。テストベンチもはいっています(tb_M508Emu.v)。
一箇所だけエラーが出ました。508Emu.vの47行の
mTimer0 tmr0(reset,fosc,Q,opt[3:0],wr_tmr,db_out,tim_out);
です。ポート数が一致しませんというエラーです。一つ足りないみたいなので、最後に「,」をつけてエラーを取りました。
mTimer0 tmr0(reset,fosc,Q,opt[3:0],wr_tmr,db_out,tim_out,);
修正後はtim_outの後に「,」がついています。出力ポートに何も書かないと単に出力先がなくなるだけです。ModelSimではエラーにならないのでしょうか?
きれいに1クロック1命令になっていて清清しいです。
とりあえず書いてみたLEDチカチカです(<が全角になってます)。
//`defaultnettype none module main( output reg [7:0] led = 8'h00, input clk); reg [20:0] ctr = 0; wire ctr_en = ctr == 0; always @(posedge clk) ctr <= ctr + 21'h1; always @(posedge clk) if(ctr_en) led <= led + 8'h1; endmodule
Quartusって、`defaultnettypeが書けないのでしょうか。エラーが出ます。
11/28追記 エラーが出て当たり前です。正しくは`default_nettypeです。間に「_」が入ります。
やってみたいのは、Xilinx系への移植です。といってもVeritakでシミュレーションできたから、余裕でできそうです。
やっぱり、Verilog好きです。
来月号の特集は「ディジ/アナ混載IC活用研究」というタイトルで、PSoCの特集です。
500kHzサンプリングUSBオシロスコープの製作というのもおもしろそうです。最大8個のAVRを2μsずつずらして動作させる、と書いてあります。
って、CPLDの記事以外、全然見てません。
- PSpice活用ワンランク・アップ!が最終回です。
- 後閑さんのMP3プレーヤ作成記事が出てます。VS1011eを使っています。
昨日、トラ技を買ってきたのに、遊ぶのに手一杯で、書くのは今日になってしまいまた。