|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
請問Altera公司的EPM7064內部ROM的實現代碼問題 |
| 作者:weiyg8051 欄目:EDA技術 |
想在EPM7064內實現一個16bitX256的ROM,不知能否實現,我仿照書上的例程 寫了一段VHDL的代碼,使用QUartus II V6.0 SP1 編譯可以通過,但是不知道在這種器件上是否能夠正常使用,并且我不知道這段代碼如何使用,請各位大俠指教 LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE rom_pack IS SUBTYPE ROM_WORD IS std_logic_vector(15 downto 0); SUBTYPE ROM_RANGE IS integer range 0 to 255; TYPE ROM_TYPE IS array (ROM_RANGE) OF ROM_WORD; CONSTANT ROM : ROM_TYPE := 共256個 (("0000000000000000"),("0000000000000000"),("0000000000000000), ("0000000000000000"),("0000000000000000"),(0000000000000000")); END rom_pack; LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE work.rom_pack.all; ENTITY rom_out IS GENERIC(read_delay:time); PORT( addr : IN std_logic_vector(7 DOWNTO 0); clk : IN std_logic; read : IN std_logic; dataout : OUT std_logic_vector(15 DOWNTO 0)); END rom_out; ARCHITECTURE sin OF rom_out IS FUNCTION logic2int(din: std_logic_vector(7 downto 0)) RETURN ROM_RANGE IS VARIABLE result: ROM_RANGE := 0; BEGIN FOR i IN 0 TO 7 LOOP IF din(i) = '1' THEN result:=result+2**i; END IF; END LOOP; RETURN result; END FUNCTION logic2int; BEGIN PROCESS(clk) BEGIN IF clk'EVENT and clk='0' THEN IF read = '1' THEN dataout <= ROM(logic2int(addr)) after read_delay; ELSE dataout <= (others=>'Z') after read_delay; END IF; END IF; END PROCESS; END sin; |
| 2樓: | >>參與討論 |
| 作者: zgl7903 于 2006/10/27 10:58:00 發(fā)布:
Quartus下有 LPM_ROM 組件可以直接使用 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |