我有一塊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)