现在让我们回到主线,继续FPGA编程的学习。之前我们我们在测试FPGA是否工作时所用到的代码里面有组合逻辑,如加法器;也有时序逻辑,如将时钟信号分频而得到的闪烁灯。
但如何组合这两种逻辑实现我们所需的功能呢?比如我们在上一篇文章中说到的控制若干个输出端口产生给定的TTL信号。用高级语言写起来很简单:
// code to input profile[N], time[N]
for (int i=0; i<N; i++) {
current_profile = profile[i];
this_thread::sleep_for(chrono::seconds(time[i]));
}
但我们是没法用Verilog语言写出类似的代码的。一方面,我们的循环需要建立在时钟周期上。另一方面,我们习以为常的顺序执行的语句在FPGA上会并行运行。
再解决实际问题前,我们先来考虑语句执行顺序的问题,解决了这一问题,其它问题也就迎难而解了。一个最为简单的问题是:如何让OK板上的LED灯从左到右依次亮起?
这里我推荐一个很好的学习Verilog语言的网站:
Verilog Beginner's Tutorialzipcpu.com