我是靠谱客的博主 甜美咖啡,最近开发中收集的这篇文章主要介绍EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化
本EDA系列介绍的系统环境是:
软件: VHDL编程语言 ;
工具: Quartus13.0
FPGA 芯片是: Cyclone III : EP3C10E144C8
电路板细节在: 添加链接描述
ROM设计,元件例化
原理: 建立 ROM 函数 rompack。
循环读取ROM的内容。为了缓慢演示,加了一个 分频过程。将时钟 clk分频成 低频clock 。
该程序便于扩充。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE rompack IS
FUNCTION romf(addrr: IN INTEGER RANGE 0 TO 15)
RETURN STD_LOGIC_VECTOR;
END rompack;
PACKAGE BODY rompack IS
FUNCTION romf(addrr: IN INTEGER RANGE 0 TO 15 )
RETURN STD_LOGIC_VECTOR IS
BEGIN
CASE addrr IS
WHEN 0 => RETURN "00000011";
WHEN 1 => RETURN "00000100";
WHEN 2 => RETURN "00000101";
WHEN 3 => RETURN "00000110";
WHEN 4 => RETURN "00000111";
WHEN OTHERS => RETURN "XXXXXXXX";
END CASE;
END romf;
END ;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE work.rompack.all;
ENTITY ROM IS
PORT(CE, clk: IN STD_LOGIC;
addr: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
dataout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ROM;
ARCHITECTURE one OF ROM IS
CONSTANT FP: INTEGER:= 39999999;
SIGNAL qb: INTEGER RANGE 0 TO FP ; -- STD_LOGIC_VECTOR(25 DOWNTO 0); --
SIGNAL clock: STD_LOGIC;
SIGNAL addrcnt: INTEGER RANGE 0 TO 15;
BEGIN
PROCESS(clk)
BEGIN
IF clk'EVENT AND clk = '1' THEN
qb <= qb + 1;
IF qb = FP THEN clock <= NOT clock; qb <= 0; END IF;
END IF;
END PROCESS;
PROCESS(clock)
BEGIN
IF clock'EVENT and clock = '1' THEN
IF CE = '0' THEN
IF addrcnt >=5 THEN addrcnt <= 0; END IF;
dataout <= romf(addrcnt); addrcnt <= addrcnt + 1;
END IF;
END IF;
END PROCESS;
END one;
最后
以上就是甜美咖啡为你收集整理的EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化的全部内容,希望文章能够帮你解决EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化EDA 电子设计自动化VHDL系列课程10 – ROM设计,元件例化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复