阅读:1643回复:1
请教关于vhdl语言的问题
定义一个信号:
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。谢谢了 |
|
沙发#
发布于:2005-04-19 17:36
定义一个信号: 在最后的 “end if” 前加“signal_test <= signal_test ;” 你写得太复杂了,这个功能要实现很简单,根本不用这么复杂。不客气的说,你脑子可能有点混乱,以后遇到更复杂的设计恐怕就头痛了。 |
|