asnowgober 发表于 2013-7-29 09:58:46

FPGA做AD采样,这种情况如何编程?

通过译码来选通要采样的模拟量,比如有6路选通、即有六路模拟量;这样的话,需采样六次才能将所有模拟量采完,然后分别处理这六个量。
如果采样一路的话,感觉好处理一些,循环采样六路,应该如何用verilog HDL来写?
之前觉得AD采样一次本身可以用一个状态机,但是外面还有六个选通的大状态,不知道怎么处理。

wye11083 发表于 2013-7-29 10:50:30

选通用一个3-8译码部分实现。

linjpxt 发表于 2013-7-29 11:05:52

本帖最后由 linjpxt 于 2013-7-29 11:12 编辑

写个大概的思路,
ADC 不管有多少通道都是一样的处理流程,只是多了个通道选择跟数据存放上的区别
通道选择模块不管ADC,只管在通道序号有变化时,使能相应的通路.

always @ ( clk )
begin
   case (ad_sta)      
      0:// 采样 ,等待 然后再转换 ad_sta<=ad_sta+1;
      xx:// 转换...ad_sta<=ad_sta+1;
      ...:   // 数据及处理 ...
      xx:// chn<=chn+1; ad_sta<=0;
   endcase
end

always @ (chn)
       case (chn)
         xx: 选通通道 1
         ...
      endcase

justin_n 发表于 2013-7-29 12:15:38

我不怎么喜欢复用状态机,直接输入六路采样,而且比较好控制,前提是充足的话

asnowgober 发表于 2013-7-29 21:30:53

linjpxt 发表于 2013-7-29 11:05 static/image/common/back.gif
写个大概的思路,
ADC 不管有多少通道都是一样的处理流程,只是多了个通道选择跟数据存放上的区别
通道选择模 ...

如何将采集得到的数据对应到所选的通道呢?

asnowgober 发表于 2013-7-29 21:32:32

wye11083 发表于 2013-7-29 10:50 static/image/common/back.gif
选通用一个3-8译码部分实现。

这个直接用FPGA来做就行,我是想知道如何通过选通利用一个AD芯片来顺序采集六个通道的模拟量。程序该怎么写比较好?

y595906642 发表于 2013-7-29 21:37:01

小状态机嵌套在大状态机里面,用握手信号交互。

linjpxt 发表于 2013-7-30 09:28:03

asnowgober 发表于 2013-7-29 21:30 static/image/common/back.gif
如何将采集得到的数据对应到所选的通道呢?

这个就更多的方法了,比如分配一个N的数组,然后外面直接来读,或是直接就N路全部输出,外面要用哪个选哪个之类的.或是用FIFO之类的.

wildone 发表于 2013-8-1 13:31:46

设计一个模块,功能是各个通道的轮询切换,状态机表示。用信号线触发采样AD采样模块进行采样,同时根据第一个模块切换通道缓存
页: [1]
查看完整版本: FPGA做AD采样,这种情况如何编程?