15. 为什么设置 `define tHCONVST           320  时 采样率就是100K ? 以及这100K 的采样率是如何传递给LTC2308器件 的呢?

 

答:这个要根据时序图和代码来看,64+12+320=396大约是400 , 10us(100K)/   25ns(40M)= 400

 

 

不需要传递采样率,你设置了每个阶段的时间,也就确定了一次ADC转换的周期,只要将 CONVET triger 间隔拉到10000ns, 这样sample rate 才会刚好100K。

 

16. adc_ltc2308.v 模块是实现 时序传输的, adc_ltc2308_fifo.v 模块是对adc_ltc2308.v 模块转avalon 协议做了个封装,对吧? 那adc_data_fifo.v  模块是干什么的呢?

答:ADC转换之后的数据是先存在FIFO里(adc_data_fifo.v)了。

 

 

 在数字电路中,FIFO:First-in First-out,是一种存储结构,其功能就是存储数据,并按照数据写入的顺序往外读出数据。

adc_data_fifo.v模块里面调用了一个dcfifo,双时钟FIFO,又叫异步FIFO,它的读写操作工作在两个不同的时钟域,在电路中一般用在不同时钟域之间的同步转换,意思就是将一个时钟域的数据,完好无损的传递到另外一个不同频率的时钟域去。

17. 在nios程序中,为啥这里先写一个10进去,读出来的却是data呢?

 

 

 从Nios Console打印窗口来看这个10 是 打印了10次:

 

 答:IOWR对ADC_LTC2308_BASE的0x01寄存器写的是num寄存器:

 

 

 IORD对ADC_LTC2308_BASE的0x01寄存器读的是data寄存器:

 

 

18, LTC2308的最高采样率是500Ksps, 时钟是40MHz, 采样率和时钟有什么区别? 它们之间是什么关系?

答: 采样率是LTC2308 的SPI传输数据一次的间隔时间频率, 时钟是整个系统的节拍。

比如系统时钟是40MHz, 那么系统节拍间隔是25ns,采样率500Ksps,那么每次采样需要80个(40M/500K)系统时钟周期,也就是 LTC2308的SPI协议一次串行通信需要80个系统时钟周期。

 

【友晶科技TERASIC】DE10_STANDARD_ADC LTC2308的代码理解

 【友晶科技TERASIC】DE10_STANDARD_ADC LTC2308的若干问题解答(SPI)(一)

 【友晶科技TERASIC】DE10_STANDARD_ADC LTC2308的若干问题解答(SPI)(二)