2012年4月16日月曜日

AhXfR[_ƎI/OfoCX


AhXfR[_ƎI/OfoCX

AhXoXƃAhX

vZbT̃XCb`AɃANZXƂɂ́A AhXoXɂāAANZXw肷̂łB (3ڂ̎eQ) ̍ہAǂ̃foCXɃANZX悤ƂĂ̂A AhXoXǂݎAANZXΏۂ̃foCXɎw HKvɂȂ܂B ̂悤ȉHAhX fR[_ (address decoder)ƌĂт܂B AhXfR[_́AAhXoX̒lA ANZXΏۂ̑IMoƂɂȂ܂B

CPU{[hI/OfoCX̃AhXfR[_

CPU{[hɂ́AXCb`(8)ALED(8)A7ZOgLED(4)A SRAMƂI/OfoCXڂĂāAꂼÂ悤 AhXԂɃ}bsOĂ̂łB
AhX̒lANZXfoCX
0x2000 - 0x3fffSRAM
0x4000 - 0x40037ZOgLED
0x4004XCb`(8)
0x4005LED(8)
́AۂɂCPU{[hŁA 74AHC138(PDF)Ƃ_IC2—pāA ̂悤ȃAhXfR[_\邱ƂŎĂ܂B

74AHC138́AG1=1, /G2A=0, /G2B=0, ̂Ƃ̂݁A A, B, C32iƂ݂ȂA̒lɑΉY0`Y7 ꂩ݂̂0ɂȂAƂ@\Ă܂B (G1=1, /G2A=0, /G2B=0̂ƂȊÓAY0`Y7ׂ͂1ƂȂ)

2‚74ACH138pāA킹ăAhXfR[h Ă邱Ƃɒӂ܂傤B ႦSRAMANZXΏۂƂȂ邱ƂMł CSRAMn0(_)ƂȂ̂́A A15=0, A14=0, A13=1̂ƂAłA AhXoX̂悤ɂȂl͈̔͂́A u0x2000`0x3fffvƂƂɂȂ܂B A12`A0́Â܂SRAMɂ‚ȂĂ܂B Ȃ킿AAhXoX̏3{(A15`A13)ɂSRAMIA SRAM̒ŃANZXꏊ́AA12`A0ɂĎw邱Ƃ Ȃ܂B


フロッピーディスクが書き込み保護されていたらどう

K4-1

CPU{[hŁAXCb`ALEDA7ZOgLEDAꂼ L̂悤ȃAhXԂɃ}bsO闝RlĂ݂܂傤B ܂A͗Ⴆ΃XCb`0x4004łȂA0x5004ȂǂɃANZXĂ XCb`ւ̃ANZXN邱ƂɂȂ܂B Ȃ킿CPUɂƂẮAXCb`ʂ̃AhX 2g(ȏ)悤Ɍ܂Aۂɂ͓̂ ANZX邱ƂɂȂ܂B (̂悤ȌۂVhE(shadow)ƌĂт܂) ̂قɁAǂ̂悤ȃAhXŃANZXł邩lA ۂɃANZXvOœmFĂ݂܂傤B

qg: 2iōlƂ킩₷ł傤B ‚܂AAhXfR[_ɂ‚ȂĂȂAhXoX̒ĺA CPUʂĂAAhXfR[_ɂ͖֌WłB Ȃ킿A̒l0ł1łAAhXfR[_̏o͂ł CSSWnȂǂ̒lɂ͖֌WƂƂɂȂ܂B

OoXpI/OfR[_

OI/Ou(0x6000-0x6fff)ւ̃ANZXAL AhXfR[_ɂĂ‚CSEXTnƂM ܂B ۂɂ́ACPŨAhXoXEf[^oX́A CSEXTn=0̂Ƃ̂݁ARlN^CN-AɓdCIɐڑĂ܂B Ȃ̓dCIȐڑ́AH}̃obt@IC (74HCT541(PDF), 74HCT245(PDF))ɂĎĂ܂B l̓f[^V[gǂł݂܂傤B

o̓foCX̐݌v

CPU{[h̃RlN^CN-Aɂ́Aقǂ̉H}̂悤 AhXoXAf[^oX̂قɁACPU݁Eǂݏo sƂɂꂼ0ƂȂWRn, RDn‚ȂĂ܂B ̃RlN^CN-AAFPGA{[h̃RlN^ɉ̐}̂悤 tbgP[uŐڑAFPGACPUANZX"\I/OfoCXƂ Ƃł܂B ȂtbgP[úA{[h́}[N(1ԃs)ǂ‚Ȃ悤 ɂ邱ƁB

̎̑OŐ݌vFPGẢHł́A A[0]`A[7], A[12]`A[15]ƂMŃAhXoXA D[0]`D[7]ƂMŃf[^oXA WRn, RDnƂMłꂼWRn, RDnA ꂼCPU{[h̐MƐڑ邱Ƃł܂B (CN-Ãs̐AA[8]`A[11]͊OɐڑĂ܂)

̐MgāACPUOI/OAhXԂɃANZX ƂɁA삷I/OfoCX邱Ƃł܂B ƂāACPU{[hAAhXԓ0x60f0ɃANZXƁA FPGA{[hLED8(܂7ZOgLED)̓_ł𐧌łI/OfoCX ݌vĂ݂邱Ƃɂ܂傤B ȂFPGẢH݌v́AH}AVerilogHDL̂ǂł܂܂񂪁A łVerilogHDLLqp邱Ƃɂ܂B

̉HVerilogHDLŋLqƁÂ悤ɂȂł傤B


ここで、iは、無料のネクステルI90携帯電話を取得することができます
 module sample(A, D, RDn,WRn, LED);   input  [15:0] A;   input  [7:0]  D;   input         RDn, WRn;   output [7:0]  LED;    reg    [7:0]  LED;    always@(posedge WRn)begin     if ({A[15:12],A[7:0]} == 12'h6f0) begin       LED  AhXoX̂A[11]`A[8]FPGA{[hɐڑĂ܂񂩂A ̒l΂āAc12{̃AhXoXłA[15]`A[12] A[7]`A[0]݂̂păAhXfR[h邽߂ɁA {}pẴAhXoX݂̂悤ɂĂ܂B ̗ł́A{A[15:12],A[7:0]}0x6f0A Ȃ킿AA[15:12]=0x6AA[7:0]=0xf0ƂȂ邱Ƃ ƂďĂ܂B Ȃ݂A[11]`A[8]́Al0ƂȂ邩1ƂȂ邩͕s(ꍇɂ قȂ)̂ŁA̒l0܂1Ɖ肵 AhXfR[ĥׂ͔łB  

Ȃmodule̓o̓|[g̋Lqɂ́ẢHł͗pȂ CPUǂݏosƂɗpRDn܂܂Ă܂A ̋Lq͍폜Ă͂܂ (LqȂƁARpCɁÃsFPGA GNDɌŒ肳Ă܂)B

K4-2

VerilogHDLLqɂāAOq̂悤ȏo̓foCX 闝R𗝉A̓mF܂傤B Ȃ̓mF̍ۂɂ́ACPŨvOɂ CKv܂B (FPGA{[hɍ쐬AAhX0x60f0Ɋ蓖ĂĂ o̓foCXɒlނƂŁAFPGA{[hLED _邱ƂɂȂ܂B)

܂̏o̓foCXAOI/Oԓ̕ʂ̃AhX }bsOĂ݂܂傤B Ȃ킿Aʂ̃AhXAƂCPU0x60e0ɏ݂ LED̓_p^[𐧌ł悤ɁA CPŨvOAFPGẢH̑oύXĂ݂܂傤B

̓foCX̐݌v

CPU{[hւ̓̓foCXAقǂ̏o̓foCXƓl ݌vł܂B ̓foCX́AANZXĂƂȊÓA f[^oXu쓮vAȂ킿0܂1̒lo͂Ă͂܂B ANZXĂȂfoCXf[^oXu쓮vĂ܂ƁA f[^oXŐḾuՓˁvNAlsƂȂ邾łȂA ꍇɂ01̈荇NACMOSH̏ꍇ H̔j󂪋NĂ܂܂B

œ̓foCX́AANZXĂȂԂł́A f[^oX؂藣悤ɂ܂B ́u؂藣v́AۂɂCs[_XƂ ܂B ́A̓foCX̃f[^oX̏o͂ƁAf[^oXA ɍCs[_X(R)ŐڑꂽԂ̂ƂŁA AdCIɐ؂藣ꂽԂɂȂ܂B ̍Cs[_XԂ́AVerilogHDLł"Z"ƂlƂ ႦΎ̂悤ɋLq܂B(high impedance = HiZ)


私は確認することができますどのように私のハードドライブが完全にクリーンです。
   assign D = (CS==1 && RDn == 0)?(Dint):(8'bZZZZZZZZ); 
ɂAf[^oXD[7:0]́AANZXΏۂƂđIꂽƂ AhXoX画f1ƂȂCS (Chip Select)1̏ꍇŁA ‚̃AhXɑ΂ǂݏoN(RDn=0)Ƃ̂݁A f[^oXDint[7:0]ɐڑAȊȌꍇ8rbgZ(erbg Cs[_X)ɂȂ܂B CSḾA̓Iɂ́Aقǂ̏o̓foCX̏ꍇ lɁAAhXoX̒lfR[hāAW[ M(wire)Ƃč쐬܂B

Ȃ?:p\L@CłĝŁA g悤ɂĂƂȂ֗łB

()?(藧‚Ƃ̒l):(ȊÔƂ̒l)

?^╶̃NGX`}[NƓǂނƁA₷ł傤B

܂Cs[_XH}ɂH݌vŗpꍇ́A primitives̒"tri"pƂ悢ł傤B (tríAtri-state buffer̗ŁAo͂0, 1, Z3‚̒l Ƃ邱Ƃł邱ƂA̖O܂)

ȂۂɉH‚Ƃɂ́ACPU̓ǂݏoɁA f[^oXɐڑׂl(L̗łDint)ƁA ̏(L̗łCS)̂Ƃɂ́A̓Iȃs_ LqKv܂B

K4-3

CPU{[h0x60f1ɃANZXFPGA{[h XCb`4‚̒l擾ł̓foCX݌vAFPGAɓ]A CPUANZXēmFĂ݂܂傤B FPGẢH݌v́AH}AVerilogHDL̂ǂł܂܂B ܂FPGA{[h̃XCb`4‚ł̂ŁA ႦD[0]`D[3]gƂ悢ł傤B (RłCPŨvOA̓̓foCX̒lǂݎ悤 CKv܂) ܂ʂ̃AhXɃ}bsOĂ݂܂傤B

Ȃ̂ƂAقǂ̏o̓foCX(WRnɉē삷H)ƁA ̓̓foCX𓯈HɋLqƁAf[^oXA ݎƓǂݏoœo͂؂ւKv܂B ̂߁Ao̓foCXLqɃf[^oX(FPGAɂƂ)o͐p 邩A邢͌q̂悤ɁAf[^oXA͂Əo͂؂ւ 悤inout^Œ`悤ɂ܂B


o̓foCX̐݌v

͂Əo͂؂ւfoCX݌v邱Ƃł܂B ႦRAḾÃAhXɑ΂āARDn=0ƂȂƂ͓ǂݏoA WRn=0ƂȂƂ͏݂sƂł܂B ̂悤ȏꍇ́AI/OfoCX̃f[^oXƂ̐ڑ[q VerilogHDL̏ꍇ́A͂ɂo͂ɂȂ[qł"inout"Ƃ 錾ĂA̒lAANZX󋵂ɉĐ؂ւ悤ɂ܂B Ⴆ0Ԓn`3Ԓñ4oCgRAM (CPU猩AhX0x6000`0x6003)́A ̂悤ɋLq邱Ƃłł傤B (moduleCS̐͏ȗĂ܂)
   inout [7:0]  D;   input [15:0] A;   reg   [7:0]  ram[3:0];   wire  [1:0]  addr;    assign addr = A[1:0]; // address for specifiing the location in RAM    assign CS = ...;    assign D = (CS==1 && RDn==0)?ram[addr]:8'bZZZZZZZZ;    always @(posedge WRn) begin     if (CS == 1) begin       ram[addr]  Ȃ̏ꍇCŚARAMւ̃ANZXĂ邱ƂMA Ȃ킿AAhXoX̒l0x6000`0x6003̂ꂩɂȂĂ邱Ƃ MAƂƂɂȂ܂B āAAhXoX̒l͈̔͂̂ƂɁA AhXoX̉2rbgA[1:0]pāARAM4oCg̏ꏊ w肷邱ƂɂȂ܂B 

̂ƂɒӂACS̐ɂāAAhXoX̂ǂ̕ ɉ邩悭lĂ݂܂傤B

K4-4

KȃTCYRAM݌vĎACPU{[hANZX ǂݏ̓mFĂ݂܂傤B

Ⴆ΁AL̂悤4oCgRAM0Ԓn`3Ԓn(CPU猩AhX 0x6000`0x6003)̂ꂩɁACPU{[hSW̒l݁A ܂ǂݏoLEDŕ\A邢́A RAMɓKȒlރvOƁA ̒lǂݍCPU{[hLED7ZOgLED \vOɎsARAMւ̓ǂݏ słĂ邱ƂmF΂悢ł傤B

̂ƂA݂ĂɓǂݏoƁAFPGAɍRAM̓삪 ǂ‚ȂƂ悤łB ݌AEZUSB_Delay(1);ŏ܂ƁA ǂݏoق悢悤łB



These are our most popular posts:

ゲームポート - Wikipedia

ゲームポートはx86ベースのパーソナルコンピュータ(パソコン)にビデオゲーム用の入力 デバイス(ゲームコントローラ)を接続する ... ゲームポートはDA-15コネクタ(DB-15と 誤って呼ばれている場合もある)を採用しており、余剰の端子にMIDI信号も配線されて いる ... のようなインタフェースはプログラマが扱うのが容易であるのに対して、ゲーム ポートは注意深くプログラムする必要があり、入力を ... システムと通常のデジタル (TTL) ジョイスティックポートを比較するなどを行うゲームポートの読み出しに著しくCPU時間を 消費し、 ... read more

USB デバイスに関する問題を解決するためのヒント

コンピューターに接続されているハードウェアが正しく動作しない場合、ドライバーの問題 が原因となっていることがよくあります。USB デバイスを ... このような場合は、デバイス の製造元の Web サイトでドライバーを探すことができます。多くの ... 管理者の パスワードまたは確認を求められた場合は、パスワードを入力するか、確認情報を提供 します。 read more

仮想マシンの構成について「ハードウェア」

CPU. 仮想マシンの CPU 設定を表示および編集するには、[仮想マシン構成] ダイアログ ボックスの [CPU] ペインを使用します。 ... このメモリの必要な値を設定するには、 スライダをドラッグするか、[メイン メモリ] フィールドに値を直接入力します。 ... Parallels Toolsがインストールされている場合は、使用しているコンピュータの画面解像度に 変わる。 ... 接続するデバイスを [CD/DVD-ROM] の一覧から選択して指定します。 .... 仮想マシンは、ホスト コンピュータでどのようなネットワーク接続が使用されていても 共有できます。 read more

CPU - Wikipedia

... する部分である。 このようなCPUを用いたプログラムによるコンピュータの逐次動作が ほとんどのコンピュータの基本的な動作原理となっている。 .... たとえば、加算を要求され ている場合、ALUが所定の入力と接続され、出力と接続される。入力は加算すべき ... read more

Related Posts



0 コメント:

コメントを投稿