搜索
bottom↓
回复: 5

帮我看看 程序 ROM做的正弦波发生器

[复制链接]

出0入0汤圆

发表于 2011-5-26 21:36:38 | 显示全部楼层 |阅读模式
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity zxb is
generic(counter:integer:=16777216);
port(clk,reset:in std_logic;                     --ROM
        q:out std_logic_vector(7 downto 0));
end zxb;

architecture a of zxb is
type vector_array is array(0 to 119) of std_logic_vector(7 downto 0);
signal count:integer range 0 to counter;
signal data:std_logic_vector(7 downto 0);
signal addr:integer range 0 to 119:=0;

Constant memory:vector_array:=
(conv_std_logic_vector(128,8),conv_std_logic_vector(134,8),conv_std_logic_vector(141,8),
conv_std_logic_vector(148,8),conv_std_logic_vector(154,8),conv_std_logic_vector(161,8),
conv_std_logic_vector(167,8),conv_std_logic_vector(173,8),conv_std_logic_vector(180,8),
conv_std_logic_vector(186,8),conv_std_logic_vector(191,8),conv_std_logic_vector(197,8),
conv_std_logic_vector(203,8),conv_std_logic_vector(208,8),conv_std_logic_vector(213,8),
conv_std_logic_vector(218,8),conv_std_logic_vector(223,8),conv_std_logic_vector(227,8),
conv_std_logic_vector(231,8),conv_std_logic_vector(235,8),conv_std_logic_vector(238,8),
conv_std_logic_vector(242,8),conv_std_logic_vector(244,8),conv_std_logic_vector(247,8),
conv_std_logic_vector(249,8),conv_std_logic_vector(251,8),conv_std_logic_vector(253,8),
conv_std_logic_vector(254,8),conv_std_logic_vector(255,8),conv_std_logic_vector(255,8),
conv_std_logic_vector(255,8),conv_std_logic_vector(255,8),conv_std_logic_vector(255,8),
conv_std_logic_vector(254,8),conv_std_logic_vector(253,8),conv_std_logic_vector(251,8),
conv_std_logic_vector(249,8),conv_std_logic_vector(247,8),conv_std_logic_vector(244,8),
conv_std_logic_vector(242,8),conv_std_logic_vector(238,8),conv_std_logic_vector(235,8),
conv_std_logic_vector(231,8),conv_std_logic_vector(227,8),conv_std_logic_vector(223,8),
conv_std_logic_vector(218,8),conv_std_logic_vector(213,8),conv_std_logic_vector(208,8),
conv_std_logic_vector(203,8),conv_std_logic_vector(197,8),conv_std_logic_vector(192,8),
conv_std_logic_vector(186,8),conv_std_logic_vector(180,8),conv_std_logic_vector(173,8),
conv_std_logic_vector(167,8),conv_std_logic_vector(161,8),conv_std_logic_vector(154,8),
conv_std_logic_vector(148,8),conv_std_logic_vector(141,8),conv_std_logic_vector(134,8),
conv_std_logic_vector(128,8),conv_std_logic_vector(121,8),conv_std_logic_vector(114,8),
conv_std_logic_vector(107,8),conv_std_logic_vector(101,8),conv_std_logic_vector(94,8),
conv_std_logic_vector(88,8),conv_std_logic_vector(82,8),conv_std_logic_vector(75,8),
conv_std_logic_vector(69,8),conv_std_logic_vector(64,8),conv_std_logic_vector(58,8),
conv_std_logic_vector(52,8),conv_std_logic_vector(47,8),conv_std_logic_vector(42,8),
conv_std_logic_vector(37,8),conv_std_logic_vector(32,8),conv_std_logic_vector(28,8),
conv_std_logic_vector(24,8),conv_std_logic_vector(20,8),conv_std_logic_vector(17,8),
conv_std_logic_vector(13,8),conv_std_logic_vector(11,8),conv_std_logic_vector(8,8),
conv_std_logic_vector(6,8),conv_std_logic_vector(4,8),conv_std_logic_vector(2,8),
conv_std_logic_vector(1,8),conv_std_logic_vector(0,8),conv_std_logic_vector(0,8),
conv_std_logic_vector(0,8),conv_std_logic_vector(0,8),conv_std_logic_vector(0,8),
conv_std_logic_vector(1,8),conv_std_logic_vector(2,8),conv_std_logic_vector(4,8),
conv_std_logic_vector(6,8),conv_std_logic_vector(8,8),conv_std_logic_vector(11,8),
conv_std_logic_vector(13,8),conv_std_logic_vector(17,8),conv_std_logic_vector(20,8),
conv_std_logic_vector(24,8),conv_std_logic_vector(28,8),conv_std_logic_vector(32,8),
conv_std_logic_vector(37,8),conv_std_logic_vector(42,8),conv_std_logic_vector(47,8),
conv_std_logic_vector(52,8),conv_std_logic_vector(58,8),conv_std_logic_vector(63,8),
conv_std_logic_vector(69,8),conv_std_logic_vector(75,8),conv_std_logic_vector(82,8),
conv_std_logic_vector(88,8),conv_std_logic_vector(94,8),conv_std_logic_vector(101,8),
conv_std_logic_vector(107,8),conv_std_logic_vector(114,8),conv_std_logic_vector(121,8)
);
begin
data<=memory(addr);          在这边出的问题
process(clk,reset)
begin
if reset='0' then
        data<="00000000";
elsif (clk'event and clk='1') then
        count<=count+1;
        if(count=counter) then
                addr<=addr+1;
        end if;
end if;
q<=data;
end process;
end a;


Error (10028): Can't resolve multiple constant drivers for net "data[7]" at zxb.vhd(60)
Error (10029): Constant driver at zxb.vhd(61)
Error (10028): Can't resolve multiple constant drivers for net "data[0]" at zxb.vhd(60)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-5-26 21:37:12 | 显示全部楼层
程序有点多  帮忙  看看

出0入0汤圆

 楼主| 发表于 2011-5-26 22:16:28 | 显示全部楼层
木有人 做过这样类似的吗?

出0入0汤圆

发表于 2011-5-26 22:23:26 | 显示全部楼层
data<=memory(addr);和data<="00000000";有冲突,这两行程序是并行,data重复赋值了。

data<=memory(addr)改在elsif (clk'event and clk='1')下面

出0入0汤圆

 楼主| 发表于 2011-5-26 22:35:16 | 显示全部楼层
原来是这样啊    谢谢楼上   编译通过了
头像被屏蔽

出0入0汤圆

发表于 2012-12-20 17:47:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表