差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
ext_osc [2017/03/28 21:59] group001 [原理图说明] |
ext_osc [2017/03/28 23:00] (当前版本) group001 [测试报告及说明] |
||
|---|---|---|---|
| 行 36: | 行 36: | ||
| 问题和解决方法:SMA射频头信号有所失真,通过调节补偿电容改善。 | 问题和解决方法:SMA射频头信号有所失真,通过调节补偿电容改善。 | ||
| ===== FPGA逻辑实现 ===== | ===== FPGA逻辑实现 ===== | ||
| - | ADC采样速率高,总线传输速率低,为保证系统的正常工作,AD转换器与FPGA之间必须采用FIFO作为缓冲器。我们利用Diamond工具生成一个4k*位数据宽度的缓冲块。 | + | 1.在顶层我们设计的模块有adc9283、FIFO_DC、Baud、send_ctrl、Uart_Tx、Generater_100mbps(ram_for_oled、oled_by_ram),顶层模块名uart_my3 |
| - | FIFO的输入信号有数据输入信号,直接和A/D转换器的输入相连下;写信号和写使能信号,写信号和上述频率选择信号相连,可以以合适的速率将数据写入FIFO,写使能设置为永远有效;读信号和读使能信号,这都有FPGA发出的控制信号给出;异步清零信号则在每次写FIFO前将其清空。输出信号有数据信号驱动OLED;满标志信号,当有效时停止对FIFO的写操作作;空标志信号,当有效时停止对FIFO的读操作。 | + | uart_my3模块和Generater_100mbps是同时设计的,验证过后将两个模块连接在一起实验功能。之所以使用串口模块是因为方便调试,将FIFO输出的数据通过串口发送到PC端,用串口调试助手观察波形。 |
| + | adc9283:给AD9283提供时钟输入 | ||
| + | FIFO_DC:使用4K的FIFO缓存AD转换后的数字量数据 | ||
| + | Baud:波特率发生模块 | ||
| + | send_ctrl:波特率选择模块 | ||
| + | Uart_Tx:串口数据发送 | ||
| + | ram_for_oled:128x64的RAM IP核模块,用于存放FIFO发送的数据 | ||
| + | oled_by_ram:通过SPI将数据发送到OLED上进行显示、控制OLED刷新和屏幕的驱动 | ||
| + | 2.关键模块实现 | ||
| + | 比较关键的代码主要有AD9283串行输入数据转换成8位并行数据输出、FIFO数据的缓存、双口RAM模块、屏幕驱动模块。 | ||
| + | 8位并行数据输入:根据AD9283的时钟以此读取输入的模拟信号,输入AD9283的时钟是12Mhz系统时钟进行8分频后进行模拟数据的采集,将采集后的数据输出给FIFO。 | ||
| + | FIFO数据的缓存:使用Dimond中的IP核,容量为4KB,输入数据为AD9283的输出数据,输出数据送入RAM中,写入FIFO数据的时钟和AD9283的时钟是同步的。 | ||
| + | 双口RAM模块:使用Dimond中的IP核,容量为128x64,输入数据为FIFO的输出数据,输出数据送入屏幕驱动模块,系统时钟的300分频作为串口的波特率、RAM的数据写时钟和FIFO的读时钟。 | ||
| + | 屏幕驱动模块:将RAM中读出的数据通过OLED驱动模块显示到屏幕上。 | ||
| + | 3.关键知识点、难点 | ||
| + | 整个代码中比较复杂的就是OLED屏幕驱动控制部分的数字逻辑的代码比较难实现 | ||
| ===== 测试报告及说明 ===== | ===== 测试报告及说明 ===== | ||
| + | {{:图片1.png?nolink|}} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | {{:图片2.png?nolink|}} | ||
| ===== 相关文档 ===== | ===== 相关文档 ===== | ||