搜索
bottom↓
回复: 6

跪求用vhdl生成正弦波的问题

[复制链接]

出0入0汤圆

发表于 2010-6-3 13:23:33 | 显示全部楼层 |阅读模式
小弟毕设要做基于fpga的任意波形发生器,板子用的周立功的030,开发软件用的libero 8.5,其中正弦波模块就是显示不出来,永远红线~~~~~郁闷,求大虾帮忙啊!
原程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity sin_gen is
port (clk,clr:in std_logic;
d:out std_logic_vector(7 downto 0));
end sin_gen;
architecture a of sin_gen is
begin
process(clk,clr)
variable num:integer range 0 to 63;
begin
if clr='0' then
d<="00000000" ;
elsif clk'event and clk='1' then
if num=63 then
num:=0;
else
num:=num+1;
end if;
case num is
when 00=>d<="11111111";when 01=>d<="11111110"; when 02=>d<="11111100";
when 03=>d<="11111001";when 04=>d<="11110101"; when 05=>d<="11101111";
when 06=>d<="11101001";when 07=>d<="11100001"; when 08=>d<="11011001";
when 09=>d<="11001111";when 10=>d<="11000101"; when 11=>d<="10111010";
when 12=>d<="10101110";when 13=>d<="10100010"; when 14=>d<="10010110";
when 15=>d<="10001001";when 16=>d<="01111100"; when 17=>d<="01110000";
when 18=>d<="01100011";when 19=>d<="01010111"; when 20=>d<="01001011";
when 21=>d<="01000000";when 22=>d<="00110101"; when 23=>d<="00101011";
when 24=>d<="00100010";when 25=>d<="00011010"; when 26=>d<="00010011";
when 27=>d<="00001101";when 28=>d<="00001000"; when 29=>d<="00000100";
when 30=>d<="00000001";when 31=>d<="00000000"; when 32=>d<="00000000";
when 33=>d<="00000001";when 34=>d<="00000100"; when 35=>d<="00001000";
when 36=>d<="00001101";when 37=>d<="00010011"; when 38=>d<="00011010";
when 39=>d<="00100010";when 40=>d<="00101011"; when 41=>d<="00110101";
when 42=>d<="01000000";when 43=>d<="01001011"; when 44=>d<="01010111";
when 45=>d<="01100011";when 46=>d<="01110000"; when 47=>d<="01111100";
when 48=>d<="10001001";when 49=>d<="10010110"; when 50=>d<="10100010";
when 51=>d<="10101110";when 52=>d<="10111010"; when 53=>d<="11000101";
when 54=>d<="11001111";when 55=>d<="11011001"; when 56=>d<="11100001";
when 57=>d<="11101001";when 58=>d<="11101111"; when 59=>d<="11110101";
when 60=>d<="11111001";when 61=>d<="11111100"; when 62=>d<="11111110";
when 63=>d<="11111111";
when others=>null;
end case;
end if;
end process;
end a;
其中clk 24M,仿真了0.2ms都没反应,求各位帮忙看下是语言的问题还是其他方面的问题~~

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

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

出0入0汤圆

发表于 2010-6-3 22:41:21 | 显示全部楼层
没问题 可能是你仿真错误

出0入0汤圆

发表于 2010-6-3 22:43:08 | 显示全部楼层
网络也需要尊严呀!

出0入0汤圆

 楼主| 发表于 2010-6-3 22:57:16 | 显示全部楼层
回复【楼主位】henglong9752
-----------------------------------------------------------------------

谢谢楼下的,有师兄对我说需要赋初值才行,可是我对vhdl里怎么写testbench跟赋初值都挺生疏……楼下的能赐教么

出0入0汤圆

发表于 2010-6-4 15:20:03 | 显示全部楼层
我也是开始学CPLD不过学的是verilog HDL ,帮你顶一下了。

出0入0汤圆

发表于 2010-6-5 16:11:52 | 显示全部楼层
library ieee;
use ieee.std_logic_1164.all;
use work.sin_gen;

entity TestBenchOfSinGen is
end entity;

architecture Sim Of TestBenchOfSinGen is
        component sin_gen
                port (clk,clr:in std_logic;
                d:out std_logic_vector(7 downto 0));
        end component;
        signal clk: std_logic:='1';
        signal clr: std_logic:='1';
        signal d: std_logic_vector(7 downto 0):=(others=>'0');
       
        begin
                u1: sin_gen port map(clk,clr,d);
                clkGen: process(clk)
                begin
                        clk <= not clk after 10ns;
                end process;
end architecture;
没有时间,要出门了,写了一个简单的仿真。调进ModelSim里就可以看到波形了。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 17:23

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

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