求高手解答,FPGA扫描外界高电平上升沿信号的机制为什么实现不了(VHDL程序)

PROCESS(clkTemp,rdint,dsp_wrmTmp,wr_fifo)
BEGIN
dsp_wrmTmp1<=dsp_wrmTmp;
dsp_wrmTmp2<=dsp_wrmTmp1;
if(dsp_wrmTmp='1' and dsp_wrmTmp2='0')then
TP<='1';
elsif(dsp_wrmTmp='0' and dsp_wrmTmp2='1')then
TP<='0';
end if;
END PROCESS;

设想通过这段程序,实现采集到外界(DSP的GPIO引脚)送进来的高低电平信号的沿(因为进程中已经有别的采集时钟沿的语句,不能在用dsp_wrmTmp' event了)。
但是实际调试中,当外界的接进来的dsp_wrmTmp从0变成1时,TP没有变成1;dsp_wrmTmp从1变成0时,TP也没有变成0.
请问这是怎么回事呢?

没有clk引入,没有D触发器,怎么实现上升沿检测啊?

PROCESS(clkTemp)
BEGIN
if rising_edge(clkTemp) then
dsp_wrmTmp1<=dsp_wrmTmp;
dsp_wrmTmp2<=dsp_wrmTmp1;
endif;
END PROCESS;

PROCESS(clkTemp,rdint,dsp_wrmTmp,wr_fifo)
BEGIN
if rising_edge(clkTemp) then
if(dsp_wrmTmp='1' and dsp_wrmTmp2='0')then
TP<='1';
elsif(dsp_wrmTmp='0' and dsp_wrmTmp2='1')then
TP<='0';
end if;
endif;
END PROCESS;
个人认为你的clkTemp就是你时钟。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-23
把dsp_wrmTmp='1'改为dsp_wrmTmp=='1'
比较是双等号,你都是用赋值那条件肯定都为真了追问

VHDL中比较就是用=的,没有==,因为赋值是<=。
语法上有问题吗?

追答

那这个就不知道了,VHDL没学过

相似回答