LZ在开发FPGA程序时在一个小记事本里记下了每天的程序进展,这样做下来可以看到自己每天的进步,很有成就感!
2010.12.17: PLL3和PLL4的程序完成,定义了内部信号pll_reset还没用到,以后最好再用上Locked信号。
2010.12.18:弄清ADC的SCLK信号与CLK信号之间的关系
2010.12.19:已经用上了PLL的locked信号,SCLK为ADC时钟的二分频,帧同步信号的时序尚未搞清
2010.12.20:基本弄清ADC时序,用24位计数器产生了FSYNC的波形;将FPGA的引脚进行了分配,将nCEo引脚配置成了普通IO;将READY和SYNC先置1。
2010.12.21:将FPGA的工程重新建立,顶层为图形文件,再将先前的PLL等模块加入。写出了ADC接口模块的代码,目前只有一路串并转换,八路同时转换待代码测试正确后再修改
2010.12.22:ADC的帧同步信号不是SCLK的24分频,而是主时钟的256分频。将程序进行了修改并仿真,将主时钟通过三个D触发器八分频产生SCLK信号,再将SCLK32分频产生帧同步信号,一路串行信号成功转成并行输出,但CLK的下降沿到SCLK的下降沿之间的时间间隔不能达到主时钟为30MHZ时的时序要求(比时序要求多了大约4ns )。
2010.12.24:学习modelsim的使用和testbench的编写
2010.12.25:Altera的FIFO的空满标志位不是同步的,再程序中给帧同步脉冲计数来确定选择哪个FIFO,仿真结果正常
2010.12.27:FIFO在输入是高阻时也能将高阻数据读入,所以需要再串并变换期间将读使能信号置低
2010.12.28:16个FIFO接在同一个总线上,读使能无效时输出不是高阻,会对总线数据有影响,群里建议1:用数据选择器。2:assign Output = enable? in0 : 1'bz;2010.12.30:采用数据选择器的方式,但是PLL3莫名没有波形输出
2010.12.31:准备不采用乒乓年操作,采用FIFO半满中断的方式来操作,发现FSYNC不是SCLK的32分频,是33分频,将adc_interface中的counter的31改成了30.
仿真发现ADC_INTERFACE模块的串并变换部分都是SCLK下降沿,数据未稳定,将移位寄存不问的always模块改成上升沿,确定何时输出以及何时complete为高的的counter都加1
2011.1.2:modelsim仿真时PLL总没有输出波形,将PLL模块去掉用时钟代替,FIFO写入正常,准备用FIFO半满标志来触发DSP读取FIFO
2011.1.6:将双向端口用宏单元实现,单独仿真EN模块正确,但是一起仿真不正确
2011.1.7:原来FIFO的前两个读时钟读不出正常的数据,而之前的仿真每个FIFO只读两次,才会不对。双向端口起初仿真只能输入不能输出,后在网上得知双向端口的输出是表现在生成的result信号里的,仿真正确。延时还需仔细考虑
2011.1.9:换了quartus ii 10.0 SP1和modelsim 6.5e
2011.1.10: DDS配置模块,启动配置即串并变换后无法结束配置,改用DSP来控制一位一位的配置。功能基本实现,但是W_CLK上升沿时数据不稳定
2011.1.11:采用一对反向的W_CLK信号来解决昨天的问题。但是别的信号产生时(比如复位)会造成W_CLK的的误动作,将W_CLK和其他动作的寄存器分开,产生了W_CLK和CLK_POP信号,问题解决了,明天将此模块整合到顶层模块中
2011.1.12:将dsp_interface模块换成了一个verilog文件,不再用bdf文件,双向端口改用verilog描述.将dsp_interface模块单独拿出来测试双向端口,在此之前先定义一个只有双向端口的工程测试双向端口的仿真。quartus ii 10.0软件出了问题,编辑原理图会异常退出,下载了10.1做备用
2011.1.13:只要不为原理图内的引脚修改名称就不会异常退出,将dds_interface模块整合到顶层模块里,但是寄存器传输级仿真时会报错,说无法例化FIFO,改成门级仿真就不会报错,仿真结果正确!
2011.1.14:将模拟开关模块整合到顶层模块,仿真正确!将PLL模块整合到顶层模块中,发现整合后地址从FF变成01时延迟很大,以至于第一次从FIFO2读数会失败,但当地址从其他地址变成01时会正常读取。
2011.1.18:将产生读FIFO使能的模块由always@(posedge CLKOUT or RST)改成了always@(ADDR or IS),这样CLKOUT完全不再参与FPGA内部的读写,CLKOUT在PCB板上的延迟将无影响。之前的地址从FF变成01时有延迟的现象消失。DA部分的程序仍在FPGA内实现,不用DSP的串口,用FPGA实现IIS协议
2011.1.19:参考网上以及DE2的示例程序,DAC模块代码以及缓冲设计完成,用modelsim功能仿真正确,时序仿真不正确,但是用quartus的波形时序仿真结果正确,不管。将DAC模块整合到顶层模块中,用modelsim时序仿真成功!
2011.1.20:将多余的测试引脚去掉,将ADC的enable信号放在了dsp_interface里面,又加入了DAC的复位信号以及FIFO向DSP发中断的逻辑(一个触发器,用DSP的IACK清除)
2011.1.21:分配引脚,下载程序时发现JTAG模式无法下载,说无法检测JTAG接口,只能用AS模式下载到了配置芯片里,下载后测试模拟开关发现模拟开关模块的电平与设计吻合
晕!JTAG不能下载是因为我把下载插头插在了AS的插座上!
2011.1.22:用JTAG试着向FPGA的模拟开关控制模块发送数据,但没有成功,不知是DSP程序不正确还是FPGA代码有问题。而且DAC短路冒烟,可能是刚开机时电压源出了故障从5V一下子跳到了10V将DA击穿。将DA吹下后正常。 |