我在C中的Microblaze微处理器上设计状态机的课程。我遇到的问题是我必须改变某个图片。让我们说我在FPGA上按BTNL;我必须获得5秒的风景图片,并在一定的3秒后,我必须使该图片闪烁。同时,时间5s - >必须在7段显示屏上显示0。这是检测到按钮并且必须显示闪烁模式的情况。 中断每0.004秒发生一次 并且微处理器的时钟是100MHz。
for(j=0; j<=5secs; j++)
{
if(j>3secs)
{
if(counter == sec){
counter=0;
if(temp==white){ //white background
temp=background;
}
else temp=white;
}else counter++;
XGpio_DiscreteWrite(®ION[4],1,temp);
}
else XGpio_DiscreteWrite(®ION[4],1,temp);
if(j==5secs)
states = IDLE;
}
我的主要问题是在7段显示屏上显示数字。当我在案例中放置displayNumber()
函数时,整个事物只有在进入displayNumber()
行时才会冻结。我知道嵌套的for
循环花费了大量的时间和精力,我认为这可能会导致问题,但我找不到可行的解决方案。任何想法或建议都非常感激。
另一件事是我尝试了一个标志,但由于中断处理它不起作用。
编辑: 我不是想获得我的问题的复制/粘贴解决方案。整个事情非常庞大,我的意思是verilog项目以及c中完成的其他功能的文件。我不希望你运行代码并重现整个事情,因为学校已经提供了Verilog项目,所以你必须生成一个比特流然后上传并运行整个板上的东西。我在这里只是在寻找一个关于你如何改进这一点的建议,你是否遇到过FPGA的这种行为,任何想法。
感谢您花时间阅读问题!