|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教:FPGA雙向IO出了問題 |
| 作者:proudpeo 欄目:EDA技術(shù) |
源程序很簡單: LIBRARY ieee; use ieee.std_logic_1164.all; ENTITY TEST IS PORT (P0 : INOUT std_logic_vector(7 downto 0); --P0做雙向IO RD,WR: IN std_logic; DATA : IN std_logic_vector(7 downto 0) ); end TEST; ARCHITECTURE exemplar OF TEST IS SIGNAL LATCH:std_logic_vector(7 downto 0);--中間寄存器 BEGIN ----------------------------------------------------- --寫進(jìn)程,WR上升沿將數(shù)據(jù)鎖存 ----------------------------------------------------- PROCESS(WR) BEGIN IF RISING_EDGE(WR) THEN LATCH<=DATA; END IF; END PROCESS; ---------------------------------------------------- --讀進(jìn)程,RD下降沿將數(shù)據(jù)輸出到雙向口并鎖存 ---------------------------------------------------- PROCESS(RD) BEGIN IF FALLING_EDGE(RD) THEN P0<=LATCH; END IF; END PROCESS; ----------------------------------------------------- end exemplar; 問題是:當(dāng)P0口定義為OUTPUT類型時,P0口可以輸出數(shù)據(jù) 可定義為INOUT類型時,始終為高阻態(tài)。 我錯在什么地方了? 本來想調(diào)單片機(jī)總線和fpga接口的,雙向問題沒有解決一切都免談 我在 fpga.com 和 edacn 的論壇上找了一些資料,都是單向的 請大蝦不吝賜教。! |
| 2樓: | >>參與討論 |
| 作者: 吳明詩 于 2005/9/3 22:52:00 發(fā)布:
這個前面很多帖子討論過了 確定的是你的寫法不對,我只能用verlog給你做個示范 inout data_inout; assign data_inout=link_data?data_reg:1’bz; 當(dāng)inout端口不輸出時,將三態(tài)門置高阻 不是聲明個inout就行了 |
|
| 3樓: | >>參與討論 |
| 作者: feng_zc 于 2005/9/4 22:14:00 發(fā)布:
我覺得應(yīng)該設(shè)置一個狀態(tài)標(biāo)志 即通過狀態(tài)標(biāo)志來控制讀、寫。因為上面的P0是靠2個不同的事件來觸發(fā)的,如果事件沒發(fā)生,系統(tǒng)綜合為高阻,但是,事件的發(fā)生只是一瞬間,其他時間都是高阻。 僅為個人看法。 |
|
| 4樓: | >>參與討論 |
| 作者: ysunuaa 于 2005/9/5 21:20:00 發(fā)布:
inout 輸出不用時置高阻,才能正常的作為輸入 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |