




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技学院课程设计任务书课 题 名 称 数字电压表设计系别电子工程系专 业电子科学与技术班级电科1001班学号201006003118姓名安启祥指 导 老 师梁晓琳2012年12月9日基于FPGA数字电压表的设计一、前言EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、
2、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。本电压表的电路设计正是用VHDL语言完成的 。此次设计采用的是Altera公司 的Quartus II 7.0软件。本次设计的参考电压为2.5V,精度为0.01V。此电压表的设计特点为通过软件编程下载到硬件实现,设计周期短,开发效率高。二、设计要求设计一个数字电压表,利用8位A/D转换器,将连续的模拟电信号转换成离散的数字电信号,并加以显示,要求其量程为0-2.5V,分辨率约为0.01V,三位数码管显示。其中一位为整数,两位为小数能正确显示小数点。3、 整体设计1. 数字电压表的基本原理数字电压表整体设计框图,如
3、下图所示,数字电压表系统由A/D(TLC549)转换模块、FPGA控制模块、数码显示模块三部分构成。FPGA控制模块控制外部A/D转换器自动采样模拟信号,通过A/D芯片转换为数字信号,再由FPGA控制模块控制数码管动态扫描向外部数码管显示电路输出数据。 数码显示TLC549 FPGA 控制 控制A/D转换器负责采集模拟电压,转换成8位数字信号送入FPGA转换控制模块,FPGA转换控制模块负责A/D转换的启动、地址锁存、输入通道选择、数据读取、转换等工作,数码显示模块负责显示当前的电压值。2. A/D(TLC549)转换模块TLC549是 TI公司生产的一种低价位、高性能的8位 A/D转换器,它
4、以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转换速率为 40000HZ,4MHZ典型内部系统时钟,电源为 3V至 6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。 TLC549各引脚功能REF+:正基准电压输入 2.5VREF+Vcc+0.1。 REF:负基准电压输入端,-0.1VREF-2.5V。且要求:(R EF+)(REF-)1V。 VCC:系统电源3VVcc6V。GND:接地端。/CS:芯片选择输入端,要求输入高电平 VIN2V,输入低电平 VIN0.8V。DATA OUT:转换结果数据串行输出端,与 TTL 电平兼容
5、,输出时高位在前,低位在后。ANALOGIN:模拟信号输入端,0ANALOGINVcc,当 ANALOGINREF+电压时,转换结果为全“1”(0FFH),ANALOGINREF-电压时,转换结果为全“0”(00H)。I/O CLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。 四、模块设计1、 部分设计程序TLC549模块:module TLC549(clk,reset,sdata,cs,dataout,clk_ad);input clk;input reset,sdata;output 7:0dataout;output clk_ad,cs;reg
6、 7:0dataout,dataout_r;reg cs;reg clk_ad_r,clk_r;reg 7:0count;reg 2:0temp;reg 3:0cnt;reg mark;reg flag;parameter2:0s0=0,s1=1,s2=2;reg 2:0c_st;/内部逻辑功能描述always(posedge clk) /分频电路begin if(count<119) count<=count+1;else begin count<=0;clk_r<=clk_r;endendalways(posedge clk) /时钟信号begin clk_ad_r
7、<=clk_r;endalways(posedge clk_r or negedge reset) /状态机begin if(!reset) c_st<=s0;else case(c_st)s0:begin cs<=1;mark<=0;if(temp=3)begin temp<=0; c_st<=s1;endelse begin temp<=temp+1;c_st<=s0;endends1:begin cs<=0;mark<=1;c_st<=s2;ends2:begin cs<=0;mark<=1;if(flag=1
8、)c_st<=s0;else c_st<=s2;enddefault:c_st<=s0;endcaseendA/D转换模块:module lookup(V,q);input 7:0V;output 11:0q; reg 11:0q;reg 11:0HB,LB;wire d1,d2,d3;always(V)begin case(V7:4) /-A/D值的高4位转换成3位BCD码 4'b1111: HB<=12'b001001000000; /-2.40 4'b1110: HB<=12'b001000100100;/-2.24 4
9、9;b1101: HB<=12'b001000001000;/-2.08 4'b1100: HB<=12'b000110010010;/-1.92 4'b1011: HB<=12'b000101110110;/-1.76 4'b1010: HB<=12'b000101100000;/-1.60 4'b1001: HB<=12'b000101000100;/-1.44 4'b1000: HB<=12'b000100101000; /-1.28 4'b0111: HB
10、<=12'b000100010010;/-1.12 4'b0110: HB<=12'b000010010110; / -0.96 4'b0101: HB<=12'b000010000000; / -0.80 4'b0100: HB<=12'b000001100100;/-0.64 4'b0011: HB<=12'b000001001000;/-0.48 4'b0010: HB<=12'b000000110010;/-0.32 4'b0001: HB<=12&
11、#39;b000000010110;/-0.16 4'b0000: HB<=12'b000000000000; / -0.00 default: HB<=12'b111111111111;Endcase数码显示模块:module scan_led(clk_1k,d,dig,seg);/模块名scan_ledinput clk_1k;/输入时钟input11:0 d;/输入要显示的数据output7:0dig;/数码管选择输出引脚output7:0 seg;/数码管段输出引脚reg7:0 seg_r;/定义数码管输出寄存器reg7:0 dig_r;/定义数码管
12、选择输出寄存器reg3:0 disp_dat;/定义显示数据寄存器reg2:0count;/定义计数寄存器assign dig = dig_r;/输出数码管选择assign seg = seg_r;/输出数码管译码结果always (posedge clk_1k) /定义上升沿触发进程begin if(count<2)count <= count + 1'b1; else count<=0;endalways (posedge clk_1k) begincase(count)/选择扫描显示数据3'd0:disp_dat = d11:8; /第一个数码管3
13、9;d1:disp_dat = d7:4;/第二个数码管3'd2:disp_dat = d3:0;/第三个数码管endcasecase(count)/选择数码管显示位3'd0:dig_r = 8'b01111111;/选择第一个数码管显示3'd1:dig_r = 8'b10111111;/选择第二个数码管显示3'd2:dig_r = 8'b11011111;/选择第三个数码管显示endcase case(count) 3'd0:seg_r7=0; 3'd1:seg_r7=1; 3'd2:seg_r7=1; endc
14、aseendalways (disp_dat)begincase(disp_dat)/七段译码4'h0:seg_r6:0 = 7'b1000000;/显示04'h1:seg_r6:0 = 7'b1111001;/显示14'h2:seg_r6:0 = 7'b0100100;/显示24'h3:seg_r6:0 = 7'b0110000;/显示34'h4:seg_r6:0 = 7'b0011001;/显示44'h5:seg_r6:0 = 7'b0010010;/显示54'h6:seg_r6:0 =
15、 7'b0000010;/显示64'h7:seg_r6:0 = 7'b1111000;/显示74'h8:seg_r6:0 = 7'b0000000;/显示84'h9:seg_r6:0 = 7'b0010000;/显示9 default:seg_r6:0 = 7'b1111111;endcaseendEndmodule2、 仿真波形CLK为TLC549的时钟输入信号,sdata为TLC549的数据输入信号,将其置为高电平,reset为复位信号,也置为高电平。Clk_ad为TLC549的输出时钟信号,cs为TLC549的片选信号,低电平有效;data_out为TLC549的8位数据输出端;c_st为状态机的状态。5、 结论1. 实验数据数码管显示电压值2.51V1.26V0.33V万用表测得电压值2.447V1.221V0.320V2.总结通过对芯片进行语言编程,控制TLC549A/D转换芯片,来实现数字电压表的功能。通过设计表明,具有很强的电路描述和建模能力能从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租车策划方案范文
- 厂房承租合同协议书范本
- 石家庄彩妆项目商业计划书
- 2025年矮生盆栽番茄种子行业深度研究分析报告
- 【课件】第6课+凝神造像-中国传统雕塑+课件高中美术人教版(2019)美术鉴赏
- 加盟合同续费协议书怎么写
- 农村木屋买卖合同协议书
- 代购买股票合同协议书
- 安全教育饮食安全课件
- 2025年流体机械市场发展现状
- JTT663-2006 公路桥梁板式橡胶支座规格系列
- 学生退学家长委托书
- 高速公路投诉培训课件
- 交通劝导员上岗培训课件
- 本科毕业论文写作指导讲座课件
- TCACM 1524-2023 中医体重管理临床指南
- 校外培训机构办学申请书范文
- 村民心理知识知识讲座
- 管工基础知识培训课件
- 气体灭火系统介绍
- 粮食仓储监管管理制度
评论
0/150
提交评论