打印

请教:VHDL分频器的一个警告

[复制链接]
1777|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dqyubsh|  楼主 | 2011-4-25 06:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想实现对主时钟10M进行分频,分出8个不同频率作为ADC启动时钟,再加一个控制可以停止ADC。

器件:ALTERA EPM3128ATC100
编译器:QUARTUS II 5.1

输入信号:
CLKIN 10M主时钟
SystemResetn 系统复位信号

输出信号:
CONVST_n

定义的内部变量:
SIGNAL count_signal  : INTEGER RANGE 0 TO 300;
SIGNAL Counts    : INTEGER RANGE 0 TO 300;
SIGNAL mid1    : STD_LOGIC ;
SIGNAL AdcConvertClk : std_logic;

之前已计算好的地址:
CpldRegCs31 - 停止分频输出
CpldRegCs_0 ~ CpldRegCs_7输出不同的8个频率。

-- =======================================================================
--XXXX,12bit ADC
-- 启动信号#CONVST由CPLD时钟分频得到,需要的采样频率为2M(0.5uS 5分频)、
-- 1M(1us 10分频)、500K(2us 20分频)、333K(3us 30分频)、250K(4us 40分频)、
-- 200K(5us 50分频)、100K(10us 100分频)、50K(20us 200分频)。
--
process( SystemResetn, DSP_WEn, CpldRegCs31, CpldRegCs_0, CpldRegCs_1, CpldRegCs_2, CpldRegCs_3,
   CpldRegCs_4, CpldRegCs_5, CpldRegCs_6, CpldRegCs_7)
begin
  if SystemResetn = '0' then
   Counts <= 300;
  elsif DSP_WEn'event and DSP_WEn = '1' then -- 写选通上升沿来临时
   if( CpldRegCs31 = '1'  ) then   -- 关闭启动时钟
    Counts <= 300;   
   elsif( CpldRegCs_0 = '1'  ) then  -- 0.5us未完成,5分频
    Counts <= 2;   
   elsif( CpldRegCs_1 = '1'  ) then  -- 1us
    Counts <= 4;
   elsif( CpldRegCs_2 = '1'  ) then  -- 2us
    Counts <= 9;
   elsif( CpldRegCs_3 = '1'  ) then  -- 3us未完成,30分频
    Counts <= 29;   
   elsif( CpldRegCs_4 = '1'  ) then  -- 4us
    Counts <= 19;
   elsif( CpldRegCs_5 = '1'  ) then  -- 5us
    Counts <= 24;
   elsif( CpldRegCs_6 = '1'  ) then  -- 10us
    Counts <= 49;
   elsif( CpldRegCs_7 = '1'  ) then  -- 20us
    Counts <= 99;
   end if;
  end if;
end process;

process( SystemResetn, CLKIN, mid1, Counts)
begin
  if SystemResetn = '0' then
   AdcConvertClk <= '0';     -- 0还是1,不确定
  elsif CLKIN'event and CLKIN = '1' then
    if count_signal = Counts and Counts /= 300 then
     count_signal <= 0;
     mid1 <= not mid1;
    else
     count_signal <= count_signal + 1;
    end if;
  end if;
  AdcConvertClk <= mid1;
end process;

CONVST_n <= AdcConvertClk;

目前出现下列编译警告:
Warning: Reduced register "Counts[7]" with stuck data_in port to stuck value GND

尽管不影响使用(分频结果是对的),但不明白报警的原因,不知道任何解决,请大侠帮忙,谢谢!

相关帖子

沙发
xiaoyuan_ly| | 2011-4-25 16:39 | 只看该作者
你可以考察下Counts[7]在你整个周期中的位值情况,应该是在整个周期中没有变化、没有使用造成报警。你再分析下看看了。。。。。。

使用特权

评论回复
板凳
dqyubsh|  楼主 | 2011-4-25 21:44 | 只看该作者
意思我懂了,想知道怎么看这个位值,我是初学~

使用特权

评论回复
地板
xiaoyuan_ly| | 2011-4-26 01:05 | 只看该作者
这样啊,你看看counts的值情况了,在整个周期赋值时,没有变化成128-255之间的值,这样不就是counts[7]总是为零了吗??!!

使用特权

评论回复
5
dqyubsh|  楼主 | 2011-4-26 06:04 | 只看该作者
呵呵,我会用仿真波形试一下这个值,谢谢你。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:yubsh@263.net

44

主题

2226

帖子

2

粉丝