午夜母猪魔
驱动牛犊
驱动牛犊
  • 注册日期2004-11-18
  • 最后登录2006-06-01
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望4点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1643回复:1

请教关于vhdl语言的问题

楼主#
更多 发布于:2005-02-27 18:39
定义一个信号:
   signal signal_test :std_logic;
在一个进程中写下如下语句:(ad0_counter为计数器,reset_sig为复位信号)
process(ad0_counter,reset_sig)
begin
  if reset_sig = \'0\' or ad0_counter=X\"000\" then
    signal_test <= \'1\';
  elsif ad0_counter=X\"01B\" then
                signal_test <= \'0\';
  elsif ad0_counter=X\"01C\" then
      signal_test <= \'1\';
  ......(注:以下的语句均与signal_test 无关)
 end if;
end process;
以上语句的本意是在ad0_counter=X\"000\"到ad0_counter=X\"01A\"时signal_test 保持为‘1’。在ad0_counter=X\"01B\"到ad0_counter=X\"01C\"时signal_test 保持为‘0’,但是通过xilinx的芯片分析工具发现。ad0_counter=X\"000\"到ad0_counter=X\"01A\"这里出现了问题。具体现象是ad0_counter=X\"000\"到ad0_counter=X\"001\"时signal_test 保持为‘1’但是ad0_counter=X\"002\"到ad0_counter=X\"01A\"就变成‘0’了。请问大家这个是什么问题啊。我用的是xilinx的芯片。开发平台是ise6.2。谢谢了
gyjhln
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-19 17:36
定义一个信号:
   signal signal_test :std_logic;
在一个进程中写下如下语句:(ad0_counter为计数器,reset_sig为复位信号)
process(ad0_counter,reset_sig)
begin
  if reset_sig = \'0\' or ad0_counter=X\"000\" then
    signal_test <= \'1\';
  elsif ad0_counter=X\"01B\" then
                signal_test <= \'0\';
  elsif ad0_counter=X\"01C\" then
      signal_test <= \'1\';
  ......(注:以下的语句均与signal_test 无关)
 end if;
end process;
以上语句的本意是在ad0_counter=X\"000\"到ad0_counter=X\"01A\"时signal_test 保持为‘1’。在ad0_counter=X\"01B\"到ad0_counter=X\"01C\"时signal_test 保持为‘0’,但是通过xilinx的芯片分析工具发现。ad0_counter=X\"000\"到ad0_counter=X\"01A\"这里出现了问题。具体现象是ad0_counter=X\"000\"到ad0_counter=X\"001\"时signal_test 保持为‘1’但是ad0_counter=X\"002\"到ad0_counter=X\"01A\"就变成‘0’了。请问大家这个是什么问题啊。我用的是xilinx的芯片。开发平台是ise6.2。谢谢了
 

在最后的 “end if” 前加“signal_test <= signal_test ;”
你写得太复杂了,这个功能要实现很简单,根本不用这么复杂。不客气的说,你脑子可能有点混乱,以后遇到更复杂的设计恐怕就头痛了。
游客

返回顶部