FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

08 | 2017/09 | 10
- - - - - 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

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


久々に CPLD


CPLDを使ってやりたいことが出来たので、久々にCPLDに触ってみた

久々すぎたのでまずxilinxのISE Design Suite 14.3を入れるところからはじめた

回線の速度が遅くてダウンロードに一日がかりw


無事ダウンロードとインストールが終わり

リハビリのために簡単なプロジェクトを作って実験してみた


まず実機で試したところうまくいった (ここまでは一昨日あたりの出来事)


これから複雑になってくるとおもうのでシミュレータのテストもしてみた
まずプログラム
20121220_013707.jpg

これをISimとかいうやつでシミュレーションしてみると
20121220_013555.jpg
あれ?うまくいかない?

かなり悩んだ

いろいろプロジェクトファイルを作り直したりもした

process文の中を変更したりしていろいろ試してみた

すると普通に値を代入するぶんにはシミュレーションがうまくいく

if(IN_A'event and IN_A = '1') then
count <= count + 1;
end if;
って文がくるとうまくいかなくなる

ってことはなんだ、シミュレータでクロックが立ち上がったときのeventが認識されないとか?

じゃあeventの信号になるやつをクロック直じゃなくてワンクッションおいた信号で試してみよう



これもだめだった



なんでシミュレーションがうまくいかないんだ
20121220_013555.jpg

まてよ、でもよく見ると出力のところ最初のクロックの立ち上がりでオレンジから赤に変わってる

つまりクロックの立ち上がりは認識してるってことじゃん

オレンジは値不定ってことだよなぁ… (追記:Uは初期値だった Xが不定)

ん!!!


値がわからないものに加算の演算をしても結果はわかんないよな!!!


じゃあ初期値をきめてやれば!!
20121220_013726.jpg
20121220_013354.jpg

やったああああああああああああああ うまくいった!!

なんでこんな当たり前の発想がすぐでてこなかたんだ!! すごくくやしい!!
でも、それ以上にうまくいったことがうれしい


以上が今日(あ、もう昨日か)の18:00~26:00までの苦悩

些細なことにずーーーーーっと悩まされ続けた

わかってしまえばなんと言うことはないが、初めてのことだとこれしきのことでこんなに苦労してしまう

CPLDの扱いは初めてじゃないけど いままであまり継続して使ってないから
どうもあまり身につかずじまい

使うたびに最初から勉強しなおしってかんじ

ふぅ、まぁ、ひとつ勉強できてよかった


CPLDを使ってやりたいことが出来たので、今度こそ身につくといいな


スポンサーサイト

NIOS2 奮闘記【26】 UART


JTAG_UARTを今まで使ってきたけど

普通(?)のUARTはどうやって使うんだろう と、ふと思った

20120823_195442.jpg
まずはUARTを追加する
20120823_195515.jpg
ボーレートやらの設定画面が出てきたので、適切な値をセット。
20120823_195528.jpg
20120823_195552.jpg


とりあえずこれでQartus2でコンパイルして NIOS2IDEに移動

nios_uart.jpg
シリアルの出力をJTAG_UART から UART_0に変更してみた。

が!

20120823_201404.jpg
なんか怒られた!!

そっか、ソフトを書き込むのにJTAG_UART使ってるんだからそこを使わなくしたらダメなのか。

じゃぁ、元に戻して
20120823_201432.jpg

さーて、どうするかなぁ

20120823_201812.jpg
#include "altera_avalon_uart_regs.h"
今までの感じからして、きっとこんな感じのヘッダがあるに違いない

よし、あったあった この中からそれっぽい関数を探そう

IOWR_ALTERA_AVALON_UART_TXDATA(base,data);これが怪しいな これを使ってみよう
20120823_201928.jpg

ターミナルソフトに端子をつなげてみると
20120823_201939.jpg
おーー うまく送られてきてる! やったね

printf関数は標準出力のJTAG_UARTを指定しちゃってるから、文字列を出力するには専用の関数を作らなきゃいけないのかな。


NIOS2奮闘記【25】ロータリーエンコーダ


NIOS2でロータリーエンコーダーをあつかってみたい

ってことで

インクリメントエンコーダを用意してFPGAとつなげた


NIO2で扱いが簡単になるように

途中でエンコーダの信号を処理するモジュールを用意する

カウント値を16ビットで出力するようにした
20120713_013429.jpg

Image2e.jpg
VHDLで記述して、ブロック図にする

配置した
20120713_013419.jpg
にしてもENCODERって名前はなんか違うかな



20120713_014846.jpg
NIOS2 IDEでプログラムを作って実行した

エンコーダの信号処理モジュールの出力を一定間隔で読んで出力してるだけ

おー うまく行った


NIOS2奮闘記【24】PIO割り込み②


以前PIOの割り込みには成功したけど

後になって気がついたが、あれはスイッチを押しっぱなしにすると

その間ずっと割り込みがかかってしまっていた


信号の立ち上がりのタイミングだけで反応するようにしたい

とりあえず以前作ったPIOの割り込みプログラムをもう一度見ようと

ブログからコピペしたら悲惨なことにw

スペースが全角になってしまっていて

error: stray '\129' in program の嵐!

こんな罠があったとは…


まずはPIOの設定画面を見てみた

20120712_222120.jpg

あれ、すぐ見つかった これっぽいな

InterruptのEdgeを選択すればいけるんじゃね?

しかし灰色になっている

あ、Edge capture registerって項目の Synchronously captureにチェックを入れれば

20120712_222134.jpg

よしよし、Edgeが選択できるようになったぞ

Edge capture registerでRising edgeを選択して

InterruptのEdgeを選択


この状態でプログラムは変更しないで動かしてみよう

~実行~


お、今度は押しっぱなしにしても反応しない 信号の立ち上がりのみに反応する!


今回はあっけなくうまくいったな


NIOS2奮闘記【23】タイマー割り込み確認


タイマー割り込みに一応成功したものの

なんとなく気になったので本当に指定した時間通りに割り込みがかかっているか

最後に確認する


割り込みごとにPIOの出力をトグル出力してオシロスコープで確認してみたら

見事設定した時間通りになってた

よかったよかった

タイマー割り込みには結構苦戦したけど

おかげでNIOS2の使い方がちょっとわかってきた。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。