基于VerilogHDL串行ADC控制电路设计与总结报告.docx
-
资源ID:35009002
资源大小:15.06KB
全文页数:9页
- 资源格式: DOCX
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于VerilogHDL串行ADC控制电路设计与总结报告.docx
基于Verilog HDL的串行ADC控制电路设计与总结报告题目名称: 报告人 : _ 学院 : 专业 : 班级 : 学号 : 制作日期: _ 目录摘要.1第一章 串行ADC控制控制电路的功能介绍及Verilog HDL简介.31.1串行ADC控制控制电路的功能.31.2Verilog HDL简介4第二章 组成模块简介.52.1组成模块.6 (1)、状态机6 (2)、锁相环8(3)、累计器10(4)、多路选择器12第三章 模拟仿真.13总结结论14参考文献15基于Verilog HDL的串行ADC控制电路设计摘要Verilog HDL的串行ADC控制电路设计,是使用高速10位逐次逼近式模数转换器( ADC)芯片TLV1572,用Verilog HDL编程语言编写状态机按一定周期采样转换模拟信号。在Quartus2软件上完成顶层电路设计、状态机、锁相环、累加器、译码器、多路选择器等编程和封装。各个模块完成不同的任务,合在一起就构成了Verilog HDL的串行ADC控制电路设计,软件模拟直接在Quartus2上进行。在此程序中关键是用于状态机,其中状态机的优势有以下几点:(1)、高效的顺序控制模型,状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态dat0是对1572的初始化、状态dat1是打开1572的片选信等,一直到采集数据输出数据。(2)容易利用现成的EDA工具进行优化设计。由于状态机的构件简单,其中用宏模块PLL将20MHz的时钟进行分频得到想要的时钟周期。(3)性能稳定。状态机容易构成性能良好的同步时序逻辑模块。(4)高速性能。状态机载高速通信和高速控制方面,有着巨大的优势。第二章 串行ADC控制控制电路的功能介绍及Verilog HDL简介1.1串行ADC控制控制电路的功能在我们的信息时代日益更新的生活,AD、DA转换时刻进行着,而这些功能的实现,均以多半是以MCU或MPU的控制芯片实现的,但CPU的不稳定和低时钟严重影响着转换的效率,因此,研究状态机控制转换芯片有着现实意义。此次设计与利用状态机就是为了了解不基于各种CPU而能稳定、高效的进行工作,从而学会编程。通过它也可以进一步学习掌握各种逻辑电路与时序电路的原理与使用方法。1.2 Verilog HDL简介Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。第二章 组成模块简介2.1组成模块顶层电路图:顶层电路设计、状态机、锁相环、累加器、译码器、多路选择器等编程和封装(1)、状态机基于Verilog HDL语言编写的状态机是本系统的核心,犹如一个稳定、高效、单一的控制CPU,其中代码如下:module TLV1572 (CS,CLK,SCLK,FS,SDI,DO,RST);input SDI;input CLK;input RST;output CS,SCLK,FS;/CS 片选,FS当接口至微处理器时,FS输入连接至Vccoutput 9:0DO; /串行数据输出reg 6:0 next,now;reg 6:0 dat;reg 9:0 DO;reg CS,SCLK;wire FS;parameter dat0=6'd0; parameter dat1=6'd1; parameter dat2=6'd2; parameter dat3=6'd3;parameter dat4=6'd4; parameter dat5=6'd5; parameter dat6=6'd6; parameter dat7=6'd7;parameter dat8=6'd8; parameter dat9=6'd9; parameter dat10=6'd10;parameter dat11=6'd11;parameter dat12=6'd12;parameter dat13=6'd13;parameter dat14=6'd14;parameter dat15=6'd15;parameter dat16=6'd16;parameter dat17=6'd17;parameter dat18=6'd18;parameter dat19=6'd19;parameter dat20=6'd20;parameter dat21=6'd21;parameter dat22=6'd22;parameter dat23=6'd23;parameter dat24=6'd24;parameter dat25=6'd25;parameter dat26=6'd26;parameter dat27=6'd27;parameter dat28=6'd28;parameter dat29=6'd29;parameter dat30=6'd30;parameter dat31=6'd31;parameter dat32=6'd32;parameter dat33=6'd33;parameter dat34=6'd34;parameter dat35=6'd35;parameter dat36=6'd36;parameter dat37=6'd37;parameter dat38=6'd38;parameter dat39=6'd39;parameter dat40=6'd40;always(posedge CLK or posedge RST)beginif(RST) next<=dat0;elsenext <= now;endalways(next)begincase(next)dat0 : begin CS<=1'b1;SCLK<=1'b0; now<=dat1; enddat1 : begin CS<=1'b0;SCLK<=1'b0; now<=dat2; enddat2 : begin CS<=1'b0;SCLK<=1'b0; now<=dat3; enddat3 : begin CS<=1'b0;SCLK<=1'b1; now<=dat4; enddat4 : begin CS<=1'b0;SCLK<=1'b0; now<=dat5; enddat5 : begin CS<=1'b0;SCLK<=1'b1; now<=dat6; enddat6 : begin CS<=1'b0;SCLK<=1'b0; now<=dat7; enddat7 : begin CS<=1'b0;SCLK<=1'b1; now<=dat8; enddat8 : begin CS<=1'b0;SCLK<=1'b0; now<=dat9; enddat9 : begin CS<=1'b0;SCLK<=1'b1; now<=dat10; enddat10 : begin CS<=1'b0;SCLK<=1'b0; now<=dat11; enddat11 : begin CS<=1'b0;SCLK<=1'b1; now<=dat12; enddat12 : begin CS<=1'b0;SCLK<=1'b0; now<=dat13; enddat13 : begin CS<=1'b0;SCLK<=1'b1; now<=dat14; enddat14 : begin CS<=1'b0;SCLK<=1'b0; now<=dat15; enddat15 : begin CS<=1'b0;SCLK<=1'b1; now<=dat16; end dat16 : begin CS<=1'b0;SCLK<=1'b0; now<=dat17; enddat17 : begin CS<=1'b0;SCLK<=1'b1; now<=dat18; enddat18 : begin CS<=1'b0;SCLK<=1'b0; now<=dat19; enddat19 : begin CS<=1'b0;SCLK<=1'b1; now<=dat20; enddat20 : begin CS<=1'b0;SCLK<=1'b0; now<=dat21; endendcaseendalways(next)begincase(next)dat16: beginDO9 <=SDI; enddat18: beginDO8 <=SDI; enddat20: beginDO7 <=SDI; enddat22: beginDO6 <=SDI; enddat24: beginDO5 <=SDI; enddat26: beginDO4 <=SDI; enddat28: beginDO3 <=SDI; enddat30: beginDO2 <=SDI; enddat32: beginDO1 <=SDI; enddat34: beginDO0 <=SDI; endendcaseendassign FS=1'b1;endmodule封装后(2)、锁相环利用软件中的宏模块分频电路图如下功能设计图(3)、累计器累加器用于选通数码管,用于点亮数码管,代码如下:module CNT10 (CLK,Q); input CLK ; output 2:0 Q ; reg 2:0 Q1 ; assign Q = Q1; always (posedge CLK ) begin Q1 <= Q1+1; end Endmodule电路图为:(4)、多路选择器第三章 模拟仿真总结结论通过此次设计研究,最终完成了串行ADC的的设计与制作。在整个设计过程中,我们组从各个模块的思路设计到实际程序编写,从点到面。在出现与处理问题的过程中,不断提升自己处理细节问题的能力,虽然遇到了很多的困难但最终还是基本上完成了设计达到了预期的效果。而更重要的是通过系统设计这项项目,使我们对于设计整体流程有了更加明晰的感受,对于今后的深入学习与应用奠定了基础。在今后的学习中,我们将继续加强EDA理论知识和Verilog语言的熟练掌握,争取更大的突破。最后,感谢老师这学期的辛勤授课,您的敬业精神值得很多老师和学生学习,通过一学期的课程学习也是我进步很多。谢谢您王老师!参考文献1、EDA技术实用教程2、Verilog HDL状态机编写技巧3、基于Verilog的状态机设计等