精華區beta Electronics 關於我們 聯絡資訊
我有一塊ALTERA學習板,週邊有支援CF卡 想用VHDL取讀取CF資料,把CF卡當記憶體在用 我上網查了一些資料,也看了一些有關HD的書(施威銘) 我想我現在只是要把CF卡當記憶體在用,應該不用書上寫得這麼複雜的作法吧? 應該也不須要RAM去記憶每次抓下來的512的位元組吧? 我想我用最笨的方法,用CLK跟COUNTER一直丟Address 把CF卡裡面磁區某個16進制的資料連續抓下來顯示在LED驗證資料正確性 當然我用WINHEX軟體先偷看它裡面位址,哪個範圍是我要抓的資料 直接針對那些位址丟Address給CF卡,叫它回傳資料... 不知道我這樣的想法可不可以?不知道有沒有 有這方面經驗的大大可以指點一下 我曉得ALTERA 有NIOS支援CF卡功能,也知道網路上很多8051的程式 但是,我手上只有這塊板子,當然希望用VHDL能夠做到,但是組合語言..我看不太懂 所以,第一次寫VHDL可能弄錯它的意思...以至於無法得到真正的CF資料 下面是我用VHDL寫的程式,DOWNLOAD下去沒辦法抓值,可否請大大指點一下 是哪邊寫錯呢? (是我把它想得太簡單了嗎?) 程式主要是要抓"00000001"與"00000010" (0x01,0x02)位址的資料 entity CFr is Port ( Clock : in std_logic; Bn : in std_logic; Data : in std_logic_vector(7 downto 0); Led : out std_logic_vector(7 downto 0); Addr : out std_logic_vector(7 downto 0); OE : out std_logic; CE : out std_logic; RDY: in std_logic; IORD : out std_logic); end CFr; architecture Behavioral of CFr is signal div_clk : std_logic; signal div_cnt : std_logic_vector(3 downto 0); signal Bn1 : std_logic; begin ...... 此為button,除彈跳程式,在此省略 ...... process(Clock) begin if rising_edge(Clock) then if Bn1 ='1' then Addr<="00000001"; Led <= Data; else Addr<="00000010"; Led <= Data; end if; end if; end process; IORD<='0'; OE<='1'; CE<='1'; end Behavioral; ============= -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.6.78 ※ 編輯: CuckooBoy 來自: 123.195.6.78 (05/06 23:38)