|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
44b0+cpld 請(qǐng)高人指點(diǎn) |
| 作者:xurenyi 欄目:ARM技術(shù) |
我現(xiàn)在在44B0的板子上面加了一片CPLD(AETC7128),想在7128里面通過地址譯碼產(chǎn)生外設(shè)的片選,也就是想擴(kuò)展幾個(gè)IO口,引了幾根地址線,還有GCS2,NWE和NOE,想問能不能實(shí)現(xiàn)產(chǎn)生片選,現(xiàn)在在寫7128的程序,不知道這條路行得通嗎?肯請(qǐng)高人指點(diǎn)一下思路,假設(shè)IO32是外設(shè)的地址片選,低電平有效,請(qǐng)問這樣寫可以嗎? IO32<=NWE OR GCS2 OR ADDR14 OR ADDR12 OR ADDR11 OR ADDR3 OR ADDR2 OR ADDR2 OR ADDR1 OR NOT ADDR0 這樣可以產(chǎn)生地址為0x4000001的擴(kuò)展IO口嗎? 懇請(qǐng)大家給我一點(diǎn)思路或有那位大哥以前就這樣做過,那就給小弟一點(diǎn)啟發(fā)吧。。! |
| 2樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/15 19:21:00 發(fā)布:
在線等。 請(qǐng)大家?guī)兔Γ。。?br> |
|
| 3樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/15 19:32:00 發(fā)布:
還有一個(gè)問題,想請(qǐng)教大家。 我因?yàn)橛泻芏嗤庠O(shè)是5V的,還加了4245作雙向電平轉(zhuǎn)換,不知道為什么當(dāng)數(shù)據(jù)線經(jīng)過4245時(shí),如果4245的方向設(shè)置為雙向時(shí),那在跑程序時(shí)就會(huì)跑飛,如果只設(shè)置為輸出時(shí),就沒有什么問題,真的搞不清什么原因,懇切請(qǐng)大家指點(diǎn)。! |
|
| 4樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/16 17:27:00 發(fā)布:
自己頂一下 |
|
| 5樓: | >>參與討論 |
| 作者: hebeijiang 于 2005/1/16 18:52:00 發(fā)布:
如果僅僅是擴(kuò)展io,不如將數(shù)據(jù)總線接入cpld將cpld直接做成io接口 這樣可以直接驅(qū)動(dòng)5v器件,不用4245進(jìn)行電平轉(zhuǎn)換。 |
|
| 6樓: | >>參與討論 |
| 作者: pandafeng 于 2005/1/17 15:30:00 發(fā)布:
頂 我用的是XILINX的芯片(XC95108)。 因?yàn)樗腎/O口電壓可以用3.3V,應(yīng)此就免了電平轉(zhuǎn)換。 對(duì)于外設(shè)的地址片選,當(dāng)然不會(huì)有問題。但我只會(huì)用ABLE,不好對(duì) 你列出的表達(dá)式說對(duì)錯(cuò)。 我還用了44b0的nWait引腳,作慢速的i/o讀寫的同步。 |
|
| 7樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/17 19:00:00 發(fā)布:
謝謝樓上兄弟的指點(diǎn)。。 我其實(shí)就是想用CPLD擴(kuò)展幾個(gè)IO口,來控制幾個(gè)慢速外設(shè),在CPLD里面要出來這么幾個(gè)信號(hào): 。保獠挎i存器的片選; 2.外部鎖存器的鎖存信號(hào),上升沿鎖存; 。常獠壳辶阈盘(hào); 現(xiàn)在在寫數(shù)據(jù)時(shí),可以用示波器看到數(shù)據(jù)線上有信號(hào),但就是沒鎖存. 不知道我上面寫的 io32<=NWE OR GCS2 OR ADDR14 OR ADDR12 OR ADDR11 OR ADDR4 OR ADDR3 OR ADDR2 OR ADDR1 OR NOT ADDR0 是否和樓上那位兄弟所說的還要加上等待 nwait 信號(hào)了?才能同步. |
|
| 8樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/17 19:04:00 發(fā)布:
請(qǐng)教pandafeng 我想你肯定做過和我相同的事情,不知是否可以再說詳細(xì)一點(diǎn),謝謝。! |
|
| 9樓: | >>參與討論 |
| 作者: whbwang 于 2005/1/17 22:15:00 發(fā)布:
我的44B0+EPM3128 用于信號(hào)隔離,包括數(shù)據(jù)輸入緩沖、輸出鎖存等。 接口是A0-A3,D0-D7,WE,OE,NGCS2 現(xiàn)在已經(jīng)可以正常工作 |
|
| 10樓: | >>參與討論 |
| 作者: pandafeng 于 2005/1/18 2:53:00 發(fā)布:
建議 如果io32(鎖存信號(hào))寫成ABEL 形式是: io32 = NEW # GCS2 # ADDR14 ... # !ADDR0; 應(yīng)該沒問題。 看看44B的rPCONB有沒有設(shè)nGCS2 把44B的系統(tǒng)時(shí)鐘降到最低,去掉芯片速度問題。 寫個(gè)死循環(huán),用示波器單獨(dú)觀察 NWE OR GCS2 是否正常。 |
|
| 11樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/18 19:27:00 發(fā)布:
謝謝 pandafeng 非常感謝你的指點(diǎn),不知能否將你的44B0任何一個(gè)用擴(kuò)展IO口來讀寫外設(shè)的一個(gè)工程文件給我參考一下,非常感謝!!! xurenyi0@yahoo.com.cn |
|
| 12樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/18 19:35:00 發(fā)布:
謝謝 whbwang 不知你能否詳細(xì)談一下你用 A0-A3,D0-D7,WE,OE,NGCS2 這些信號(hào)怎樣得到輸出鎖存信號(hào)的,假若鎖存信號(hào)為IO32,那么它的表達(dá)式您是怎么寫的,給我參考一下,好嗎?不管是用什么語言寫的,非常感謝。! |
|
| 13樓: | >>參與討論 |
| 作者: littleou 于 2005/1/18 21:23:00 發(fā)布:
你用的vhdl還是verilog? 奇怪的寫法,給你個(gè)參考 always @(posedge iowbuf or posedge reset)//wrirte operation begin if(reset) begin dout[31:0]<=32'h0000; end else if(CS) begin case (AddrBus[2:0]) 3'B100 : dout[7:0] <= DataBus; 3'B101 : dout[15:8] <= DataBus; 3'B110 : dout[23:16] <= DataBus; 3'b111 : dout[31:24] <= DataBus; default : dout <= dout; endcase end end // always @ (posedge iowbuf or posedge rest) * - 本貼最后修改時(shí)間:2005-1-18 21:27:16 修改者:littleou |
|
| 14樓: | >>參與討論 |
| 作者: pandafeng 于 2005/1/19 3:13:00 發(fā)布:
例子 鎖存器例子:(440寫入地址0x0AXXXXX1) ABEL語法 ///////////////////////////// MODULE DECODE Title 'DECODE' Declarations GPIOW PIN; GCS5 PIN; DB7..DB0 PIN; // 連接44B數(shù)據(jù)總線 DB = [DB7..DB0]; ADDR3..ADDR0 PIN;//44B地址 CS0 NODE ISTYPE 'COM';//地址譯碼節(jié)點(diǎn) LATCH_Q7..LATCH_Q0 PIN ISTYPE 'REG';//觸發(fā)器 LATCH = [LATCH_Q7..LATCH_Q0]; Equations CS0 =!GCS5 & !ADDR3 & !ADDR2 & !ADDR1 & ADDR0; LATCH.CLK = 0; LATCH:=0; LATCH.AP = !GPIOW & CS0 & DB; LATCH.AR = !GPIOW & CS0 & !DB; end DECODE //////////////////////////////// 44b 使用nGCS5 /////////////////////////////// #define pIOBASE (volatile unsigned CHAR*)0x0a000000 //init nGCS5 rPCONB |= (1<<10); // PB10=nGCS5; rBWSCON &= ~(3<<20); // bus width = 8; //rBANKCON5 如有需要,才設(shè)置 //寫鎖存器 *(pIOBASE+1) = 0xaa; |
|
| 15樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/19 19:31:00 發(fā)布:
謝謝pandafeng 及樓上各位兄弟的指點(diǎn) 我還有一個(gè)問題想請(qǐng)教大家,現(xiàn)在我在FLASH里面寫了一個(gè)程序,復(fù)位以后可以脫機(jī)運(yùn)行了,但我發(fā)現(xiàn)當(dāng)我把其他程序載到RAM里面運(yùn)行時(shí),程序載完單步運(yùn)行以后出現(xiàn)下面的情況, ENTRY b Resethandler b handlerundef ....... 它不能進(jìn)復(fù)位中斷向量段,跑到 b handlerundef 那里,但我用寫到FLASH里面的工程文件作為模板文件,在SDT2.51里面,把所有的程序和頭文件加進(jìn)來鏈接所生成的映象文件到RAM里面運(yùn)行又可以單步跑.我自己覺得好像把其它的程序載進(jìn)RAM里面運(yùn)行,按全速運(yùn)行以后,它好像還是在跑FLASH里面的程序,FLSH里面的程序是控制閃燈的,當(dāng)把其它的程序載進(jìn)RAM里面運(yùn)行按全速運(yùn)行以后,燈也在閃,而RAM里面載的程序并沒有閃燈的程序,請(qǐng)大家?guī)臀曳治鲆幌拢x謝。! |
|
| 16樓: | >>參與討論 |
| 作者: pandafeng 于 2005/1/20 5:08:00 發(fā)布:
SDT251我只用過幾天! 把main改為: void Main() { while(1); } 看看正常不? 跟蹤一下看哪里產(chǎn)生了Exception。 |
|
| 17樓: | >>參與討論 |
| 作者: xurenyi 于 2005/1/20 21:48:00 發(fā)布:
請(qǐng)大家?guī)兔?br> |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |