HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2022/07/07

Xilinxの FPGA Spartan-6 XC6SLX16に SRAMを追加する方法 Xilinxの FPGA Spartan-6 XC6SLX16に SRAMを追加する方法

(ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加した)

Tags: [FPGA], [電子工作], [Xilinx XC6SLX9], [FPGA 2022]




● Xilinxの FPGA Spartan-6 XC6SLX16に SRAMを追加する方法

 ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加した。

 AX309には 256Mb (16Mx16bit)の 133MHzの SDRAMが搭載されていますが、DRAMは扱いが面倒なので、扱いが簡単な SRAMを増設します。

 Alliance Memoryの AS6C4008は DIPパッケージで、ありがたい事に動作電圧が +3.3Vにも対応していて、300円程度の手頃な価格で購入できます。

AS6C4008 - Alliance Memory

 今回は AS6C4008-55PCNを入手しました。512KB SRAMで 300ml幅の DIP 32pinパッケージです。

・Alliance Memory AS6C4008-55PCN 512KB SRAMで 300ml幅の DIP 32pinパッケージ
Alliance Memory AS6C4008-55PCN 512KB SRAMで 300ml幅の DIP 32pinパッケージ



 ALINX AX309の 40pinの拡張コネクタにメス コネクタ 2x20ピンの足長ピンソケットを接続し、その足長ピンに直接 SRAMを半田付けします。

連結ピンソケット 2×20(40P)
・連結ピンソケット 2×20(40P)
連結ピンソケット 2×20(40P)



 ICの幅が 300milあるのでソケット側が足長ピンじゃないと足が届かず半田付けができないのです。(下記の写真を参照)

 ちなみに昔は元気だったので専用基板を作成して表面実装のメモリ ICを使ったりして最強の拡張基板を作ったりしていました。
 当時は OLIMEXと言うブルガリアに有る基板屋にプリント基板を発注するのがアマチュアの電子工作の間で流行していました。

 今は気力が無いので お手軽半田付けで済ましています。

2004/10/08
ヒューマンデータ製 ALTERA Cycloneボード
ヒューマンデータ製 ALTERA Cycloneボード

  AlteraのCycloneは高性能

2004/02/15
OLIMEXで基板を作ろう
OLIMEXで基板を作ろう

  ブルガリアの基板製造会社で低価格で基板を作ってくれます

 ISSIの高速 SRAM IS61C1024-10Nは DIP 32pinのパッケージでも ICの幅が狭いので丁度良いのですが、動作電圧が +5Vなので今回の用途には使えません。
 理由は Spartan-6の I/Oが +5Vレベルに対応していないから。(+5Vの TTLレベルの信号を突っ込むと Spartan-6が壊れる。仕様では +4.1Vまでが許容値)
 +5V動作の IS61C1024を +3.3Vで動作させる事も考えましたが「どうせ動かんだろう」と思い辞めました。(とは言うものの1ヶ月くらい毎日悩みました)

 まあ、容量も AS6C4008の 512KBに対して 1/4の 128KBなので不満もあった訳ですが、ICの幅が「狭い」と言うのは物凄い魅力的でした。

 ちなみに IS61C1024のメモリ ICは 100円~200円程度です。

・ISSIの高速 SRAM IS61C1024-10Nは DIP 32pin ICの幅が「狭い」と言うのは物凄い魅力的
ISSIの高速 SRAM IS61C1024-10Nは DIP 32pin ICの幅が「狭い」と言うのは物凄い魅力的
 ICの幅が「狭い」と言うのは物凄い魅力的!

・ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真
ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真


ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の写真




● ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図

・ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図
ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図


・ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図
ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図


・ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図
ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図


・ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図
ALINX AX309 XC6SLX16に 512KB SRAM Alliance AS6C4008-55PCNを追加の配線図



 SRAMの全領域の読み書きをテストするプログラムを作成して動作を確認しました。

 ちなみに 55nsの動作仕様ですが、14.615MHz(68.42ns)まで動き、14.706MHz(67.99ns)ではエラーになりました。
   // 10.0MHz OK = 100.00ns
   // 12.0MHz OK =  83.33ns
   // 14.0MHz OK =  71.42ns
   // 14.5MHz OK =  68.96ns 14.500MHz
   // 14.6MHz OK =  68.42ns 14.615MHz
   // 14.7MHz NG =  68.00ns 14.706MHz
   // 14.8MHz NG =  67.58ns 14.796MHz
   // 15.0MHz NG =  66.66ns
※ DCMの丸めの関係で周波数が右側の値になります。

 原因としては下記の複合要因が考えられます。
 ・信号ラインに直列に 33Ωの抵抗が入っている
 ・信号ラインを引き回している(上の抵抗と共に高速信号の伝達では波形が不利になる)
 ・コネクタを経由している(コネクタで信号が減衰している)
 ・電源ラインに細い線を使っている(電圧が変動して誤動作の原因になる)
 ・実は中華のリマーク品
 ・私の作成したテストプログラム(FPGA回路)がヘナチョコ(要因として大)

 とりあえず SRAMとしての動作が確認できたので良しとします。

 ucfファイル(ピン配置の定義ファイル)
######## Alliance AS6C4008-55 512K X 8 BIT LOW POWER CMOS SRAM ########
NET MemCE       LOC = T15  | IOSTANDARD = LVCMOS33;
NET MemOE       LOC = R12  | IOSTANDARD = LVCMOS33;
NET MemWE       LOC = T4   | IOSTANDARD = LVCMOS33;

NET MemDB<0>    LOC = N16  | IOSTANDARD = LVCMOS33;
NET MemDB<1>    LOC = M16  | IOSTANDARD = LVCMOS33;
NET MemDB<2>    LOC = K15  | IOSTANDARD = LVCMOS33;
NET MemDB<3>    LOC = K16  | IOSTANDARD = LVCMOS33;
NET MemDB<4>    LOC = L16  | IOSTANDARD = LVCMOS33;
NET MemDB<5>    LOC = M15  | IOSTANDARD = LVCMOS33;
NET MemDB<6>    LOC = P16  | IOSTANDARD = LVCMOS33;
NET MemDB<7>    LOC = R16  | IOSTANDARD = LVCMOS33;

NET MemAdr<0>   LOC = P15  | IOSTANDARD = LVCMOS33;
NET MemAdr<1>   LOC = R15  | IOSTANDARD = LVCMOS33;
NET MemAdr<2>   LOC = R14  | IOSTANDARD = LVCMOS33;
NET MemAdr<3>   LOC = T13  | IOSTANDARD = LVCMOS33;
NET MemAdr<4>   LOC = T12  | IOSTANDARD = LVCMOS33;
NET MemAdr<5>   LOC = T9   | IOSTANDARD = LVCMOS33;
NET MemAdr<6>   LOC = T7   | IOSTANDARD = LVCMOS33;
NET MemAdr<7>   LOC = T6   | IOSTANDARD = LVCMOS33;
NET MemAdr<8>   LOC = R7   | IOSTANDARD = LVCMOS33;
NET MemAdr<9>   LOC = L8   | IOSTANDARD = LVCMOS33;
NET MemAdr<10>  LOC = T14  | IOSTANDARD = LVCMOS33;
NET MemAdr<11>  LOC = R9   | IOSTANDARD = LVCMOS33;
NET MemAdr<12>  LOC = R5   | IOSTANDARD = LVCMOS33;
NET MemAdr<13>  LOC = T5   | IOSTANDARD = LVCMOS33;
NET MemAdr<14>  LOC = R2   | IOSTANDARD = LVCMOS33;
NET MemAdr<15>  LOC = P2   | IOSTANDARD = LVCMOS33;
NET MemAdr<16>  LOC = M4   | IOSTANDARD = LVCMOS33;
NET MemAdr<17>  LOC = R1   | IOSTANDARD = LVCMOS33;
NET MemAdr<18>  LOC = N6   | IOSTANDARD = LVCMOS33;



Tags: [FPGA], [電子工作], [Xilinx XC6SLX9], [FPGA 2022]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

AMD Xilinxの FPGA Spartan-6 XC6SLX16のボードを買ってアーケード ゲームを動かす
AMD Xilinxの FPGA Spartan-6 XC6SLX16のボードを買ってアーケード ゲームを動かす

  ALINX AX309 XC6SLX9の中華クローンの XC6SLX16版を購入しました

AMD Xilinxの FPGAの開発アプリ ISE WebPackをダウンロードして Windows 10で動かす方法
AMD Xilinxの FPGAの開発アプリ ISE WebPackをダウンロードして Windows 10で動かす方法

  Spartan-6の FPGAの開発用に Xilinx ISE WebPack開発ソフトウェアを Windows 10で動かす方法

Xilinxの FPGA Spartan-6の Block RAM RAMB8BWERに初期値を入れて ROMとして使う方法
Xilinxの FPGA Spartan-6の Block RAM RAMB8BWERに初期値を入れて ROMとして使う方法

  Xilinxの FPGA Spartan-6の Block RAM RAMB8BWERに初期値を入れて ROMとして使う方法

FPGA Spartan-6 XC6SLX16でファミコンを動かす!
FPGA Spartan-6 XC6SLX16でファミコンを動かす!

  Xilinx FPGA Spartan-6 XC6SLX16 NES clone in ALINX AX309

Xilinxの FPGA Spartan-6で PicoBlaze KCPSM 8 ビット マイクロコントローラーを動かす!
Xilinxの FPGA Spartan-6で PicoBlaze KCPSM 8 ビット マイクロコントローラーを動かす!

  PicoBlaze KCPSM6 in Spartan-6 with ISE WebPack

Xilinxの FPGA Spartan-6で MicroBlazeを ISE WebPack 14.7で無料ライセンスで動かす方法
Xilinxの FPGA Spartan-6で MicroBlazeを ISE WebPack 14.7で無料ライセンスで動かす方法

  How to MicroBlaze in Spartan-6 with ISE WebPack 14.7 only Free License to Blink LED !

USB HOST機能を FPGAに実装する方法、FPGAの GPIOに USB HIDデバイスを接続したい!!
USB HOST機能を FPGAに実装する方法、FPGAの GPIOに USB HIDデバイスを接続したい!!

  FPGAに USB HOST機能を実装して Low Speedの USB HIDデバイスを接続するのら

USBの通信プロトコルを勉強する
USBの通信プロトコルを勉強する

  今まで漠然としていた USBデバイスの通信方法を理解します

USB HOST機能が欲しいのでワンチップマイコンの GPIOで USB HOST機能を実現する
USB HOST機能が欲しいのでワンチップマイコンの GPIOで USB HOST機能を実現する

  FPGAに USBデバイスを接続したいのですが、USB HOSTの通信を実装できないので困っています

OLIMEX LPC-H40(Philips LPC2106)
OLIMEX LPC-H40(Philips LPC2106)

  MOTHER BOARD for LPC-H40(LPC-H2106) and ASM Sample Program.

線形帰還シフトレジスタ LFSRのまとめ、FPGAの Verilog HDLでの実装例
線形帰還シフトレジスタ LFSRのまとめ、FPGAの Verilog HDLでの実装例

  LFSR Linear Feedback Shift Registerについて調べた

【2022年版】最近流行の RISC-Vプロセッサの環境を WSL Ubuntu上に構築する方法
【2022年版】最近流行の RISC-Vプロセッサの環境を WSL Ubuntu上に構築する方法

  RISC-Vプロセッサの Rocket Chipの開発環境を Windows上に構築して Verilogする方法

XILINX FPGAのBlock RAMをROMとして使う方法
XILINX FPGAのBlock RAMをROMとして使う方法

  FPGAに内蔵のBLOCK-RAMにROMとして初期値を与える方法

スパルタン2で
スパルタン2で"ギャラクシアン基板"を作る!

  Verilog言語で記述してあります

スパルタン2で
スパルタン2で"MIDWAY 8080(TAITO インベーダ基板)"を動かす!

  ハードウェアで本物を作ります

スパルタン2で
スパルタン2で"パックマン"を動かす!

  FPGAでパックマンが動きます

スパルタン2で
スパルタン2で"ド*キーコ*グ"を動かす!

  これもFPGAで動いちゃいます

スパルタン3でアーケードゲームを動かす!
スパルタン3でアーケードゲームを動かす!

  XAPP694の使用例、INVADER/GALAXIAN/PACMAN/D*NKEY-K*NG/TIME PILOT




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/fpga/xilinx_spartan6_add_sram/