<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>コメを噛め &#187; CPLD</title>
	<atom:link href="http://www.fumi2kick.com/komekame/archives/category/cpld/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fumi2kick.com/komekame</link>
	<description>rerofumi の電子工作メモ</description>
	<lastBuildDate>Thu, 09 Sep 2010 02:22:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HDL開発のおすすめ入門書</title>
		<link>http://www.fumi2kick.com/komekame/archives/603</link>
		<comments>http://www.fumi2kick.com/komekame/archives/603#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:43:16 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[FPGA]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/?p=603</guid>
		<description><![CDATA[
先日部屋を掃除していたら、混沌の奥底から探していた本が発掘された。
「HDLによる高性能ディジタル回路設計」　私がHDLを学習する際に大いに参考となった一冊である。
著者は森岡澄夫。いまやSOMESATで有名な「超電磁P」の森岡氏である。
この本が氏の著書だと言うことに気がついたのはうかつにも森岡氏と会ってから大分たってからのことだったのだけれども、書籍のタイトルを見ただけで「あー、あの本かー」と思ったほどに印象深くかつ参考になる一冊だった。
サブタイトルに「ソフトウェア感覚を離れてハードウェアを意識する」とあるように、ハードウェアとソフトウェアの違いや、ハードウェアはこういう風に設計するんだよといった方針をわかりやすく教えてくれる。
他に類のない良著なのだけれども、これ一冊ですべてが完結するわけではなかったりする。あくまでも「どういった方針で作るのか」で終わっているので、実際に FPGA を設計したりするためには VHDL や VerilogHDL の文法解説書が別に必要になるのだよな。
FPGAに興味があるという初心者は、まずこの本を最初にざっくりと読んでデジタル回路とはどういうものかをつかんでから入るのがオススメ。
CQPICことPIC16F85コンパチCPUのVHDLソースコードも付いてくるよ。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/603/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ギャラクシアンの基板とEPROM</title>
		<link>http://www.fumi2kick.com/komekame/archives/433</link>
		<comments>http://www.fumi2kick.com/komekame/archives/433#comments</comments>
		<pubDate>Sat, 18 Apr 2009 11:31:34 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[Memory]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/?p=433</guid>
		<description><![CDATA[
中古のアーケードゲーム基板でギャラクシアンを入手した。
残念ながらオリジナルではなくてコピー基板。オリジナルだと今や5万円くらいの値段がついているところなのだけれども、コピー品なので1.5万円というそこそこのお値段。それでも高めではあるのだけれども、そこはそれ、もう30年近く昔のものなので十分にビンテージな一品でありある意味完動であるだけでもすげえといったところもあるので。
日本で流通していた一枚基板モノだと、プログラムROMは3つ載っていたらしい。32kbit が2つに、16kbit が1つ。バイトで表現すると10kBほど。

これの 32k のところを  7F, 7J、16k のところを 7L と表記しておく。

ところがこのコピー基板ではプログラムROM部分がドーター基板になっていて 16kbit のROMを5個使う形になっていた。
これら複数のプログラムROMを手元の 256kbit(128kbitでも良いけど) UV-EPROM に焼き込んで、一本にまとめてみようというのが今回のチャレンジ。


まずはバックアップも兼ねてプログラムROMの読み取り。
このROMはi2716互換ではなくTMS2716互換らしい。

TMS2716
 A7  1     24 Vcc
 A6  2     23 A8
 A5  3     22 A9
 A4  4     21 Vbb
 A3  5     20 /CS
 A2  6     19 Vdd
 A1  7     18 A10
 A0  8     17 D7
 D0  9     16 D6
 D1 10     15 D5
 D2 11     14 D4
Vss 12     13 D3

基板側の 7L は上記ROMと同じ信号配置なので良いとして、32k側の信号をドーターボードのパターンから追って解析する。
調べてみると、7F と [...]]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/433/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コメベーダー その1</title>
		<link>http://www.fumi2kick.com/komekame/archives/245</link>
		<comments>http://www.fumi2kick.com/komekame/archives/245#comments</comments>
		<pubDate>Fri, 10 Aug 2007 16:22:29 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/245</guid>
		<description><![CDATA[てなわけで、V850とCPLD CRTCによるインベーダーゲームの完成です。
タイトルはプロジェクト名だった「コメベーダー」をそのままタイトルにしてしまいました。考えるの面倒だったので。
まずは作成成果物の提示ということで、動作している所を紹介するムービーとスクリーンショットから。

ムービーはニコニコ動画にあるのと同じもの。
  
作成成果物としてのソースコード。
komevader V850 ソースコード
komevader CPLD VHDL ソースコード
CPLDは以前から変わっていないはず。
V850のソースコードも画面周りはCPLDとSRAMが無いと意味がないので参考程度に。でも、音声出力周りは使い回しが効くんじゃないかと。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/245/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[V850] インベーダーゲーム完成</title>
		<link>http://www.fumi2kick.com/komekame/archives/239</link>
		<comments>http://www.fumi2kick.com/komekame/archives/239#comments</comments>
		<pubDate>Wed, 08 Aug 2007 03:52:44 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/239</guid>
		<description><![CDATA[トータルでは長いこと続けてきたインベーダーゲームとそれを動作させるハードウェアの制作ですが、ついに完成。
動作の様子はニコニコ動画にアップしてあるので、見てやってくださいな。
ニコニコ動画はアカウントがなくて見れないよ、という方用の動画や、ソフトウェア部分のソースコードと解説などはまたこのあと少しずつ用意していく予定。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[V850] インベーダーゲームプロジェクト</title>
		<link>http://www.fumi2kick.com/komekame/archives/238</link>
		<comments>http://www.fumi2kick.com/komekame/archives/238#comments</comments>
		<pubDate>Sun, 05 Aug 2007 17:35:17 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/238</guid>
		<description><![CDATA[
これまでの色々な要素はこれを作るために必要なものだったから。
といった感じで、V850＋CPLD CRTC 基板によるインベーダーゲームを制作中。
スクリーンショットは、一応V850＋CPLD CRTC 基板実機で動いているものを撮影しているけれども、まだまだ未完成品。
今はソフトウェア作成のターンなので、なかなかここに進捗とかが書きづらく間が空いてしまう次第。(ソフトウェアは本業なもんでいまいち語る事がないのです)
ちなみに、Interface誌の V850 アプリケーションコンテストに応募する予定はありません。
テレビゲーム製作は既に記事になっていることだし。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/238/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[V850] CRTC の仕上げとライフゲーム</title>
		<link>http://www.fumi2kick.com/komekame/archives/230</link>
		<comments>http://www.fumi2kick.com/komekame/archives/230#comments</comments>
		<pubDate>Thu, 05 Jul 2007 16:54:29 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>
		<category><![CDATA[fuwafuwaBlog]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/230</guid>
		<description><![CDATA[細かい調整も終わり、ひとまず CPLD CRTC も予定通りに仕上がった感じ。
高機能じゃないけれどもね。
cpld_ctrc_070706.zip
 

表示しながらの画面描画実験。
フラッシュビデオ その1
するするとシャッターの様に描かれていくのは、CRTCとCPUのSRAMバスアービトレーションを行っていないから。
CRTCが画面を描いている時というのは一生懸命SRAMからデータを読んでいる時である。そんなときにCPUから読み書きしようとするとバスが衝突してとんでもないアドレスを表示してしまうことになるし、CPUも思ったところに思ったデータが書けないことになる。
そこで、CRTCがSRAMからデータを読み出している期間はCPUからのアクセスを遮断している。この時、CPUがSRAMにアクセスできるのはCRTCが画面を描いていない時、つまりVBLANK期間だけとなる。
その隙を狙って描画するのだが、このテストコードではその VBLANK期間にだいたい5〜6ラインくらい描いているようだ。
CRTCのENABLEを下げて無効にすると画面は真っ暗になるが、フルタイムでSRAMにアクセスできるので 1枚画をその隙に転送するとか、画面をクリアするとかに使う。
 

そんな様子を眺めていてもつまんないだろうから、もちょっと見れるように即興でライフゲームを作ってみた。
フラッシュビデオ その2
まあ、ライフゲームを見て楽しいかどうかは人によるとは思うけれども。
一応ソースコード。やっつけ風味。
crtc_life_demo.zip

]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[V850] CPLD CRTC 表示テスト</title>
		<link>http://www.fumi2kick.com/komekame/archives/229</link>
		<comments>http://www.fumi2kick.com/komekame/archives/229#comments</comments>
		<pubDate>Wed, 27 Jun 2007 16:11:30 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>
		<category><![CDATA[fuwafuwaBlog]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/229</guid>
		<description><![CDATA[ 

テストコードをいじりながらチェックしていたら CPLD の VHDL にケアレスミスを発見。その一点を直したらすんなりと動作を始めた。おおっ。
早速適当な絵をテスト表示。
XC95108 用の VHDL ソースコード
cpld_crtc_070627.zip
V850側の表示チェックコード(上記スクリーンショットのデータ込み)
v850_crtc_check.zip
表示しているときのアクセス許可信号となる VBlank 信号が拾えていない風味なのでまだ不具合は残っている状態。
もうちょっと調査。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[CPLD] CPLDでCRTCプロジェクト、画が出始めた</title>
		<link>http://www.fumi2kick.com/komekame/archives/228</link>
		<comments>http://www.fumi2kick.com/komekame/archives/228#comments</comments>
		<pubDate>Tue, 26 Jun 2007 17:59:12 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[fuwafuwaBlog]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/228</guid>
		<description><![CDATA[ 

さぼり気味で遅々として進まない、V850＋CPLDなプロジェクト。
目的であるところの NTSC モノクロ CRTC を CPLD で書き始めた。
方式は毎度の抵抗二本方式だけれども、SRAM と CPLD CRTC で CPU 側に負荷をかけずにテレビ出力するのが狙い。
しかし、CRTC ってホントカウンターのかたまりでしか無いから、VHDL で書くと案外あっさりとしたものになるのね。
 

SRAM 内のノイズパターンが表示されるところまでは来た。
ジッタは無いわけじゃないけど、そこそこ小さいのでロジック様々な感じ。
一応画が出たけれども、RAMのアドレスと表示結果がなんかおかしいので、これから苦労しながら修正というパターンかと。
NTSC 信号は厳密なことをいうと chanさんところの RS-170A に沿ったものを生成しないとならないのだけれども、実際はテレビが結構補正して読み込んでくれるのでかなり適当でもなんとかなる。
私の場合は水平走査線 262.5本ではなく 262本でごまかしている。0.5の補正がないので奇数フィールドと偶数フィールドは同じ信号。
さらに言うと垂直同期信号は 3ラスタ分下げっぱなしで切り込みパルスも等価パルスも付与していない。(PSoCのときは切り込みパルスを作っていたけれども)
でもまあ、それでも画になってくれるものなのですよ。取り敢えずでも画面に何か映ると楽しいしね。

]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[V850] SRAM動作確認できた</title>
		<link>http://www.fumi2kick.com/komekame/archives/225</link>
		<comments>http://www.fumi2kick.com/komekame/archives/225#comments</comments>
		<pubDate>Sun, 13 May 2007 15:42:24 +0000</pubDate>
		<dc:creator>rerofumi</dc:creator>
				<category><![CDATA[CPLD]]></category>
		<category><![CDATA[V850]]></category>
		<category><![CDATA[fuwafuwaBlog]]></category>

		<guid isPermaLink="false">http://www.fumi2kick.com/komekame/archives/225</guid>
		<description><![CDATA[CPLD 内部をほとんどスルーで構成して、V850 から SRAM が読み書きできるかどうかをテストする。
まあ、いくつか不具合があって修正しながらなんとか動作確認ができたのでめでたしめでたし。
不具合の内訳は、配線ミス 2箇所、CPLD の inout(データバス)部分で in の時はハイインピーダンスに設定するあたりが良くわかっていなかったというのが一つ。
ひとまず動作している様に見える CPLD の VHDL ソースとピン設定。
sram_test_cpld.zip
V850側のSRAMチェックソースコード。
v850_sram_check.zip
レジスタ設定しか参考にならないと思うけれども。いちお、メモ代わりに。
実際に外部バスへメモリを接続すると、V850側からは 0&#215;100000 以降が外部RAM領域になる。それ未満のアドレスでは、読み出し時は ROM から、書き込み時は外部RAMへと変則的なアクセスとなる。
PM+ で新しいプロジェクト作成時「外部RAMを使うか」という項目があるけれども、ここで「はい」を選ぶとディレクティブの .data 領域(変数や可変データが置かれる領域)が 0&#215;100000 に設定されてしまう。ああ、そういう意味だったのかと思った次第。
今回 SRAM 領域をコンパイラに使われると不具合があるので、内蔵 RAM を使うような設定となることを確認しておく。
配線のリストをちょっと更新。
必要かどうか悩んだV850のクロックを一応CPLDに与える事にした。そのために一部配線を入れ替え。
記事としては面白みが無いところだけれども、私としては動いて一安心という一区切りなのでした。
]]></description>
		<wfw:commentRss>http://www.fumi2kick.com/komekame/archives/225/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
