先前的文章我们介绍了Qt编写可视化程序的大致框架。现在,我们可以在这个框架的基础上探索如何实现我们想要的功能。在第一篇文章中,我曾说过我的项目需要用FPGA来处理PMT产生的光子信号。这个信号以TTL信号的形式传入FPGA中,而FPGA在计算特定时间内的脉冲数后,会把结果报告给计算机进行后续的处理。
需求分析与程序逻辑设计
读取FPGA上的数据看上去并不困难,因为我们有GetWireOutValue()这个函数可以调用。但什么时候读取FPGA上的数据却是个不小的问题,需要根据应用好好的设计一番。
我的项目中,FPGA会按顺序执行一些序列,每个序列会在对应的端口输出给定的电平并执行给定的时间。FPGA将在最后一个序列执行的过程中对PMT传来的TTL信号进行计数。将计数传给电脑后开启下一个周期,而电脑需要实时地将这些数字显示出来。
显然,我们需要一个结束信号与一个触发信号分别告诉电脑与FPGA什么时候开始读取计数,什么时候该开始执行序列。而FrontPanel所提供的WIRE OUT与TRIGGER IN的API可以很好地接收并发送信号。
于是,一个朴素的想法就是设计一个start按钮,点击的时候执行以下语句:
unsigned int feedback = 0;
dev->ActivateTriggerIn(0x40, 0);
while (fee