wanwzy 发表于 2010-8-11 19:40:22

基于FPGA的正弦信号发生器频率问题

先发个整体代码
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity sin is
    Port ( CLK : inSTD_LOGIC;    ------50M开发板内部时钟   
         Q : outSTD_LOGIC_VECTOR (7 downto 0));------8位正弦信号输出
end sin;

architecture Behavioral of sin is
component sin_generate   ----------利用ISE中block memory IP核(ROM加入了64个数据)存放正弦信号数据
    port (
    clka: IN std_logic;
    addra: IN std_logic_VECTOR(5 downto 0);
    douta: OUT std_logic_VECTOR(7 downto 0));
end component;

signal q1:std_logic_VECTOR(5 downto 0);--------rom地址计数端
signal cnt:std_logic_vector(3 downto 0);-------分频计数子
signal clk5M:std_logic;------------------------实际使用时钟
begin
process(clk)------------------------分频进程
        begin
        if (clk'event and clk='1') then
                if cnt=5 then clk5M<=not clk5M;
                          cnt<=(others=>'0');
                else cnt<=cnt+1;
                end if;
        end if;
end process;

process(clk5M)-------------ROM地址产生进程
begin
        if (clk5M'event and clk5M='1')
                then q1 <= q1+1;
        end if;
end process;

inst_sin_generate : sin_generate
      port map (
            clka => clk5M,
            addra => q1,
            douta => Q);
end Behavioral;

数模转换电路图ourdev_574399.doc(文件大小:46K) (原文件名:新建 Microsoft Word 文档.doc)



开发板输出端接数模转换模块,再到示波器。最终示波器上看到了正弦波形。但是问题是不管怎么改分频,在示波器上读出的频率总是5Khz。请问各位大牛这是怎么回事呀?

sunemnqsu 发表于 2010-8-12 08:12:42

改频率是要改采集点的个数···

wanwzy 发表于 2010-8-12 09:12:08

回复【1楼】sunemnqsu
改频率是要改采集点的个数···
-----------------------------------------------------------------------

我是想通过改频率来改变正弦波形的频率(我想是这样的,不知道对不对,当CLK5Mhz上升沿到来时从ROM读出一个数据,一共64个数据。那么正弦波形的频率就应该是64 * CLK5Mhz),但是现在的问题是不管分频到5Mhz还是其他频率,示波器上读出的频率总是5Khz。这就让人不理解了,再怎么说修改了分频程序示波器上读出的频率也应该不同呀!

请各位高手帮忙分析分析!小弟先谢了!
页: [1]
查看完整版本: 基于FPGA的正弦信号发生器频率问题