simpheele

    1. 关于 正弦波信号发生器的问题 7/3128 FPGA/CPLD 2012-05-29
      问题已解决!问题出在程序设计中的某个判断条件出现越界。。。
    2. 我终于找到问题所在了!原因就是定义变量的问题。 我把分频系数定义为variable,并放到分频进程里面,仿真结果正确。 但是由于信号与硬件中的连线相对应,但是variable变量在硬件中没有直接的对应物。 如果把程序下到硬件上变量还有效吗,会不会又出现 输出时钟 没了的现象? 以下是修改后的程序: entity sa_clk is port( clk : in std_logic; ------输入50MHz时钟 sa_n: in integer range 0 to 512; ---- 输入一周期内采样次数 f : in integer range 20 to 200000 :=20; ----输入正弦波频率 sa_clk : out std_logic -------------输出采样时钟 ); end sa_clk; architecture behavor of sa_clk is signal count : integer :=0;                        signal sa_clk_f:integer:=10240;                 begin                                         process(clk,f)                    variable n: integer :=4883;                         variable ftmp: integer :=20;                         begin                                        ftmp:=f;                                 sa_clk_fn-1) then                                                  count
    3. 夏老师,我找到问题所在的地方了,但是我不明白为什么只要频率一改变,输出的 采样时钟 就停止工作了。以下是采样时钟的代码,夏老师您能看下哪里出错了吗? entity sa_clk is         port(                                 clk : in std_logic;          ------输入50MHz时钟                                 sa_n: in integer range 0 to 512;  ---- 输入一周期内采样次数                                 f : in integer range 20 to 200000 :=20; ----输入正弦波频率                                 sa_clk : out std_logic    -------------输出采样时钟         );         end sa_clk;         architecture behavor of sa_clk is                 signal count : integer :=0;                 signal n: integer:=4883;                 signal sa_clk_f:integer:=10240;                 begin                 process(f)                 begin                 sa_clk_f
    4. 夏老师,我就是这个思想的,只是波形rom部分没写出来。主要问题是,调节频率,也就是调节采样时钟频率的时候经常出现输出波形的截止现象,我们检查了外部 数模转换、滤波器等硬件电路发现没问题,我们觉得是程序的问题,但是我找不到问题,纠结了好久了!
    5. 我最近在设计一个正弦波发生器的过程中,出现了很诡异的问题。频率稍微上调多点,输出波形就截止。采取fpga的de0开发板,方案如下: 1. 输入正弦波频率f(可调节频率) ——>  频率处理以及显示(元件1) ——> 输出整形(integer)频率  f 2. 输入频率  ——> 选择一个周期内对正弦波的采样次数 sa_times(元件2) ——> 输出sa_times 3. f 和 sa_times  以及 50MHz晶振时钟 同时输入 ——> 分频(元件3)(n=f * sa_times , count=50M / n)——> 输出采样时钟(即采样频率为sa_times*f) 4 .输入采样时钟和sa_times ——> 扫描正弦函数表,分离出正弦波频率(元件4) ——> 输出按正弦变化的8位二进制序列 按此方案编程,外接数模转换以及滤波电路等输至示波器内,外部硬件电路经过检测毫无问题。而且能产生精确度极高,很漂亮的波形。 但当我们调节频率时,在初始化频率的基础上, 当我们把频率往上调时,调到初始化频率的数倍(3~4倍)以上后,输出波形总是突然截止,只能通过重新载入程序(重启开关)的方式回复波形。 而当我们初始化频率设置在任何频率时,都能得到对应频率的初始化波形。这是为何?是不是程序有问题?本人已纠结数周,求求大神解救!!! 附部分vhdl代码:(可读性非常好!) 元件1:频率预置(preset)f entity preset is port( clk: in std_logic; botton2:in std_logic; en_switch:in std_logic_vector(5 downto 0); ------------限于DE0板,采用开关使能,按钮计数的方式调频 ...... f: out integer ); end preset architecture behavor of preset is -----------------------------内部信号------------------------------------- -----------------------------频率位BCD码----------------------------- signal tmp0: std_logic_vector(3 downto 0):=(others =>'0'); -----------频率个位 signal tmp1: std_logic_vector(3 downto 0):=(others =>'0'); signal tmp2: std_logic_vector(3 downto 0):=(others =>'0'); signal tmp3: std_logic_vector(3 downto 0):=(others =>'0'); signal tmp4: std_logic_vector(3 downto 0):=(others =>'0'); signal tmp5: std_logic_vector(3 downto 0):=(others =>'0');--------------频率百千位 signal ftmp: integer range 20 to 200000 = 20; ---------------------------------------------------------------------------------- begin --------------------------预置频率进程--------------------------------- process(botton2) begin if falling_edge(botton2) then ---------------------------------------------------------------- if tmp0="1001"  and  en_switch(0)='1' then tmp0
    6. 一道题,用vhdl写 9/3285 FPGA/CPLD 2012-05-21
      直接求出输出关于输入的逻辑表达方程,并采用卡诺图化简得最简式 在vhdl直接一句话实现,从而同时实现了硬件以及软件的高效运算。
    7. 求夏老师指教,谢谢 3/2656 FPGA/CPLD 2012-05-21
      对于一般使用者来说,pld跟fpga没什么区别。 当然细究起来也是有区别的: cpld 门资源较多,触发器资源较少,适合完成各种算法以及组合逻辑;fpga在这方面恰恰相反。 编程上,fpga比cpld灵活,使用更方便。 小规模宜用cpld,大规模用fpga等。。。 对于你上面的电路来说,计数器需要触发器资源较多,宜用fpga;加法器需要门电路较多,宜用cpld。

最近访客

< 1/1 >

统计信息

已有378人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言