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ƂɂȂ܂BCPU{[hI/OfoCX̃AhXfR[_
CPU{[hɂ́AXCb`(8)ALED(8)A7ZOgLED(4)A SRAMƂI/OfoCXڂĂāAꂼÂ悤 AhXԂɃ}bsOĂ̂łBAhX̒l | ANZXfoCX |
0x2000 - 0x3fff | SRAM |
0x4000 - 0x4003 | 7ZOgLED |
0x4004 | XCb`(8) |
0x4005 | LED(8) |
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ƂȂ)
274ACH138pā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Ă݂܂傤Bqg: 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ǂł݂܂傤Bo̓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ẢHv́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̔jNĂ܂܂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}ɂHvŗ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擾ł̓foCXvAFPGAɓ]A CPUANZXēmFĂ݂܂傤B FPGẢHv́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 ̓̓foCXHɋ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͂ւfoCXv邱Ƃł܂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ȃTCYRAMvĎ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
0 コメント:
コメントを投稿