EDA课程设计数字电压表的设计_第1页
EDA课程设计数字电压表的设计_第2页
EDA课程设计数字电压表的设计_第3页
EDA课程设计数字电压表的设计_第4页
EDA课程设计数字电压表的设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子课程设计 数字电压表的设计 1 目录目录 目录1 一、前言2 二、 设计任务与要求6 三、 总体框图6 四、 选择器件8 五、模块功能11 六、总体设计电路图20 七、总结 1,心得22 2,展望22 3,致谢23 八,参考文献23 2 一、前言一、前言 课题研究的背景 随着信息技术获得了突飞猛进的发展, 信息技术渗透了我们生活的几乎全部 领域, 改变着人类的生存状态和思维模式。而我们的课题所涉及的电子设计自动 化(EDA)技术就是在这种时代背景下产生的,并影响巨大。FPGA 是新型的可编 程逻辑器件,与传统 ASIC 相比,具有设计开发周期短、设计制造成本低、开发 工具先进 等优点,特别适合于产品的样品开发和小批量生产。传统的数字电压 表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其 在产品需求发生变化时,不得不重新布版、调试,增加了投资风险和成本。而采 用 FPGA 进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有 利于数字电压表向小型化、集成化的方向发展。 随着电子技术的发展,当前数 字电子系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该 潮流发展的引擎就是日趋进步和完善的 ASIC 设计技术。目前数字系统的设计可 以直接面向用户需求,根据系统的行为和功能的要求,自上而下的完成相应的描 述、综合、优化、仿真与验证,直接生成器件。上述设计过程除了系统行为和功 能描述以外, 其余所有的设计几乎都可以用计算机来自动完成,也就说做到了电 子设计自动化(EDA)这样做可以大大的缩短系统的设计周期,以适应当今品种 多、批量小的电子市场的需求 伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设 计手段, 己经广泛应用于模拟与数子电路系统等许多领域。目前电子技术的发展 主要体现在 EDA 领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻 的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微 电子技术交叉运用的现代电子设计学科。其中 EDA 设计语言中的 VHDL 语言是一 种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路 设计工作。本电压表的电路设计正是用 VHDL 语言完成的。此次设计主要应用的 软件是美国 ALTERA 公司自行设计的 Quartus II。 FPGA 设计具有以下优点: (1)硬件设计软件化 这是 FPGA 开发的最大优势。传统硬件电路设计先要进行功能设计,然后进 行电路板级设计并做称电路板后进行调试,如果电路中有什么错误,整个电路板 都将作废,这是很不经济的。FPGA 的开发在功能层面上可以完全脱离硬件而在 EDA 软件上做软仿真。当功能确定无误后可以进行硬件电路板的设计。最后将设 计好的,由 EDA 软件生成的烧写文件下载到配置设备中去,进行在线调试,如果 这时的结果与要求不一致,可以立即更改设计软件,并再次烧写到配置芯片中而 3 不必改动外接硬件电路。 (2)高度集成化,高工作频率 一般的 FPGA 内部都集成有上百万的逻辑门,可以在其内部规划出多个与传 统小规模集成器件功能相当的模块。 这样将多个传统器件集成在同一芯片内部的 方法不但可以改进电路板的规模,还可以减少 PCB 布线的工作。 由于各个模块都 是集成在 FPGA 芯片内部,这就很大程度地解决了信号的干扰问题,使得 FPGA 的工作频率可以大幅度的提高。另外,一般的 FPGA 内部都有 PLL 倍频的时钟, 这进一步解决了电磁干扰和电磁兼容问题。 (3)支持多种接口 FPGA 芯片可支持多种标准的接口电平,可通过 EDA 开发工具来选定采用什么样的接口标 准,包括常用的 TTL 和差分输入等。这便于后端各种不同接口电路的匹配。 FPGA 设计流程 可编程逻辑器件的设计是利用 EDA 开发软件和编程土具对器件开发的过程。 它包括设计准备、设计输入、功能仿真、设计处理、时序仿真和器件编程及测试 等七个步骤。 1设计准备 在系统设计之前,首先要进行方案论证、系统设计和器件选择等准备工作。 一般采用自上而下的设计方法,也可采用传统的自下而上的设计方法。 2设计输入 设计输入将所设计的系统或电路以开发软件要求的某种形式表示出来, 并送 入计算机的过程称为设计输入。设计输入通常有以下集中形式: 1)原理图输入方式 2)硬件描述语言输入方式 3)波形输入方式 3功能仿真 功能仿真也叫做前仿真。 用户所设计的电路必须在编译之前进行逻辑功能验 证,此时的仿真没有延时信息,对于初步的功能检测非常方便。仿真中如发现错 误,则返回设计输入中修改逻辑设计。 4设计处理 设计处理是器件设计中的核心环节。 在设计处理过程中,编译软件将对设计 输入文件进行逻辑化简、 综合优化和适配, 最后产生编程用的编程文件。 主要有: 1) 语法检查和设计规则检查 2)逻辑优化和综合 4 3)适配和分割 4)布局和布线 5时序仿真 时序仿真又称后仿真或延时仿真。 由于不同器件的内部延时不一样,不同的 布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块 进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竟争冒险等 是非常有必要的。 6器件编程测试 时序仿真完成后,软件就可产生供器件编程使用的数据文件。 VHDL 语言描述 硬件描述语言(hardware description language,HDL)是电子系统硬件行为 描述,结构描述,数据流描述的语言.目前,利用硬件描述语言可以进行数字电子 系统的设计.随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合 电 子系统设计也正在探索中。 国外硬件描述语言种类很多,有的从 Pascal 发展而来,也有一些从 C 语言发展而来.有些 HDL 成为 IEEE 标准,但大部分是企业标准.VHDL 来源于美国军方,其他的硬件描述语言则多来源 于民间公司.可谓百家争鸣,百花齐放.这些不同的语言传播到国内,同样也引起了不同的影响. 在我国比较有影响的有两种硬件描述语言:VHDL 语言和 Verilog HDL 语言.这两种语言已成 为 IEEE 标准语言。 VHDL 语言的设计流程 采用 VHDL 语言设计硬件电路系统的设计流程一般可以分为以下几个步骤。硬件电 路系统设计要求的定义。编写描述硬件电路系统功能的 VHDL 语言程序。VHDL 语言 程序的模拟。VHDL 语言的综合、优化和布局布线。 布局布线后的设计模拟。器件的 编程。设计人员在从事硬件电路系统的合计过程中,编写 VHDL 语言程序之前必须对硬件 电路系统的设计目的和设计要求有一个非常明确的认识才行。 Quartus II II开发平台简介 Quartus II 是 Altera 提供的 FPGA/CPLD 开发集成环境,Altera 是世界最大 可编程逻辑器件供应商之一。Quartus II 在 21 世纪初推出,是 Altera 前一代 FPGA/CPLD 集成开发环境 MAX+plus II 的更新换代产品, 其界面友好,使用便捷。 在 Quartus II 上可以完成设计输入、HDL 综合、布线布局(适配) 、仿真和下载 5 和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进 行设计输入、快速处理和器件编程。 本次所设计的电压表的测量范围是 05V,精度为 0.01V。 此电压表的设计特 点为:通过软件编程下载到硬件实现,设计周期短,开发效率高。 关键字关键字:电子设计自动化(EDA);FPGA;VHDL;A/D;数字电压表。 二、设计任务与要求二、设计任务与要求 要求利用 FPGA 控制模块数转换器对外部输入的模拟信号进行采样,获取当 前电压值,并在数码管上显示。 传统的数字电压表设计通常以大规模 ASIC(专用集成电路)为核心器件,辅以 少量中规模集成电路及显示器件构成。ASIC 完成从模拟量的输入到数字量的输 出,是数字电压表的心脏,这种电压表的设计简单、精确度高,但是这种设计方 法由于采用了ASIC器件使得的它欠缺灵活性, 其系统功能固定, 难以更新扩展, 。 后来发展起来的微处理器(单片机)控制通用 A/D 转换器件的数字电压表的设 计的灵活性有所提高,系统功能的扩展性变得简单,但是由于微处理机的引脚数 量有限, 其控制转换速度和灵活性还是不能满足日益发展的电子工业的需求。而 应以 EDA 技术及 FPGA,其集成度高、速度快、性能十分可靠、用户可自由编 程且编程语言通俗易懂、 系统工程扩展非常方便。 采用 FPGA 芯片控制通用 A/D 转换器可是速度、灵活性大大优于微处理器和通用 A/D 转换器构成的数字电压 表。 a,能够实现一个通道的采样控制; b,产生 ADC0809 工作所需的各种控制信号; c,计算转换后的数字电压信号,并以 BCD 码方式表示。 三、三、 总体框图总体框图 方案一: 本利用 ADC0809 作为电压采样端口,FPGA 作为系统的核心器件,用 LED 进行数码显示,把读取的 8 位二进制数据转换成便利于输出 3 位十进制 BCD 码 送给数码管。 采用 FPGA 芯片作为系统的核心器件,负责 ADC0809 的 A/D 转换的启动、 地址锁存、输入通道的选择、数据的读取。同时,把读取的8 位二进制数据转换 成便于输出 3 位十进制的 BCD 码送给数码管,以显示当前测量电压值。这些工 6 作由 ADC0809 转换控制模块、数据转换模块、译码模块完成。 图 1 图 2 方案二: 基于 VHDL 语言的系统设计是采用自顶向下的设计方法,将系统划分为多个 功能模块,然后再逐个实现各个模块的功能,最终把他们组合在一起,形成一个 大的系统。 本系统 共分 为 6 个模块, 分别 为时 钟分 频( div_f) 、数据 采集控制 (cs_control) 、数据串转并(chuan2bing) 、显示数值计算(data_calculate) 、 数码管扫描(led_select) 、显示译码(led_translate) 。 在设计中,主要采用分模块的方式,先实现各个模块,然后组成整个系统。 主要分为如下几个模块:时钟分频(div_f) 、数据采集控制(cs_control) 、数 7 据串转并( chuan2bing) 、显示数值计算(data_calculate) 、数码管扫描 (led_select) 、显示译码(led_translate) 。其中时钟分频主要用计数器实现, 采样数据暂存于一寄存器。利用 TLC549 就可以采集外部模拟电压的大小并转换 成数字信号, 通过串行输入到控制器, 经过控制器对数据处理如计算成实际电压、 保留三位小数, 再经过控制器设计的数码管控制模块控制四个数码管显示处理过 后的数据, 就实现了将外部电压值显示在数码管的功能,这样就实现了数字电压 表的显示。 这里我们采用方案一。 四、选择器件四、选择器件 (1)A/D 转换器 ADC0809 控制电路 编程说明 利用 ADC0809 作为电压采样端口,FPGA 作为系统的核心器件,用 LED 进 行数码显示,把读取的 8 位二进制数据转换成便于输出 3 位十进制 BCD 码送给 数码管。 由 FPGA 设计的 ASIC 芯片: 一方面产生 ADC0809 的控制信号,控制 ADC0809 实现 05v 的模拟电压到 8 位 数字量 DB0DB7 的变换; 另一方面将读入的数字量转化成电压工程值,并转换为 3 位 BCD 码的七段数字 显示字符码送到 LED 数码管进行显示。 FPGA 构成的 ASIC 芯片中包括三部分电路: 1,用有限状态机设计的 A/D 转换控制电路; 2,将 8 位数字量 DB0DB7 转换为 3 位 BCD 码的电压值的转换电路; 3,3 位 LED 显示器的译码显示电路。 所用芯片 ADC0809 的技术资料: 1,工作电压:+5v,即 VCC=+5v。采用逐次逼近的方法实现 A/D 转换。 2, 模拟输入电压范围:0+5v。 3,分辨率:8 位。 2,转换时间:100us。 3,转换误差:1LSB。 参考电压:2.5v。 8 图 3,ADC0809 控制器的状态转换图 图 4 外部特性(引脚功能) ADC0809 芯片有 28 条引脚,采用双列直插式封装,如图 1323 所示。下 面说明各引脚功能。 IN0IN7:8 路模拟量输入端。 2-12-8:8 位数字量输出端。 ADDA、ADDB、ADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: AD 转换启动脉冲输入端,输入一个正脉冲(至少 100ns 宽)使其 启动(脉冲上升沿使 0809 复位,下降沿启动 A/D 转换) 。 EOC: AD 转换结束信号,输出,当 AD 转换结束时,此端输出一个高电 平(转换期间一直为低电平) 。 OE:数据输出允许信号,输入,高电平有效。当 AD 转换结束时,此端输入 一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 9 REF(+) 、REF(-) :基准电压。 Vcc:电源,单一5V。 GND:地。 ADC0809 芯片的控制方法及转换过程: 控制 ADC0809 动作的信号有:ALE,START,OE,EOC 。 ADC0809 的动作大致分为 5 个步骤区间:S0,S1,S2,S3,S4。每个步骤区间 的动作方式如下: 步骤 S0:对 ADC0809 进行复位操作; 步骤 S1:由 FPGA 发出信号要求 ADC0809 进行 A/D 转换; 步骤 S2: 转换后, 转换完毕后的 EOC 将高电位降到低电位, 而转换时间100us; 步骤 S3:转换结束,有 FPGA 发出读命令; 步骤 S4:有 FPGA 读取 DB0DB7 上的数字转换资料,并锁存数据。 (2)将采样数字量转换成 3 位 BCD 码 编程说明 8 位数字量 BD0BD7 如何变成 3 位 BCD 码?用 FPGA 实现乘除法是很耗 资源的,因而,下面采用查表方法求取 BD0BD7 与模拟输入电压 05v 的对应 关系。 编一个查表程序,对上述电压进行 BCD 编码,然后根据对应的 4 位 BCD 码相加的结果决定是否进位, 从而得到待处理数据的 BCD 码。 例如: 从 AD0809 上取得的数据位“11011110” , “1101”对应的电压值位 4.16v,其对应的 BCD 编码 为“010000010110” , “1110”对应的电压值为0.28v,其对应的 BCD 编码为 “000000101000” 。低 4 位相加为“1110” ,大于 9,加 6 将其调整为 BCD 码, 其值为 0100,并且向前有一进位。四位相加的结果为 0011,由于低位有进位, 因此最终结果为 0100,。高四位的结果为0100.三位合计值为 4.44v,与4.16+0.28 的结果一样。 表中将 8 位数字量分为高 4 位 HB 和低 4 位 LB,这样每个 4 位码的编程都 是从00001111的16组码, 由于5V被8位二进制码最大值除得到的结果是0.02v, 即数字量每增大 1 对应模拟电压增大 0.02v。 表中 ADC0809 采样的参考电压值是 2.56v。 16 进制2 进制高 4 位电压低 4 位电压 000000.000.00 100010.320.02 200100.640.04 300110.960.06 401001.280.08 501011.600.10 601101.920.12 701112.240.14 810002.560.16 910012.880.18 A10103.200.20 B10113.520.22 10 C11003.840.24 D11014.160.26 E11104.480.28 F11114.800.30 图 5 2, 从表中得到的模拟电压值必须用 BCD 码表示才能便于用 LED 数码管显示。 例如,ADC0809 的 DB0DB7 是 89H(10001001B) ,高 4 位 HB 是 1000, 低 4 位 LB 是 1001,表中查询到高四位 1000 对应的 2.56v,写成 BCD 码是 0010,0101,0110;低四位 1001 对应的是 0.18v,写成 BCD 码是 0000,0001,1000. 其和是 2.74v,求的 BCD 码的运算如下: HB001001010110 LB000000011000 +进位10110 结果001001110100 (3)译码,显示电路 编程说明 1,译码、显示电路可以采用动态扫描显示和静态显示两种方法。这里采用动态 显示。 2,动态显示的字位更新采用一个计数器频率约为 125Hz 的信号轮流接通各位数 码管的位线,并对显示字符进行扫描,应保证显示不闪烁。 (4)EP1C12Q240C8 FPGA EP1C12Q240C8 开发板是基于 FPGA 的硬件描述语言 EDA 和软内核嵌入式 系统的 SOPC 开发平台。系统采用多层 PCB 板设计,完善的电源和时钟设计,性 能稳定可靠、结构紧凑美观。系统采用主流 FPGA 构建平台,片内资源丰富,板 载器件多、周边接口多、可扩展性强。优化设计使系统调试方便,配置容易。配 备丰富的例程有利于 FPGA 和 SOPC 的学习、快速入门与提高。FPGA/SOPC 开发平 台是电子、 信息类专业学生学习 FPGA 和 SOPC 的理想良师益友, 是各大专院校教 学科研的良好工具,也可用于科研机构研发特色新产品。 五、功能模块五、功能模块 1,ADC0809(ad) 功能:利用 ADC0809 作为电压采样端口,进行 A/D 转换。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ad is port(clk:in std_logic; eoc:in std_logic; 11 datain:in std_logic_vector(7 downto 0); dataout:out std_logic_vector(7 downto 0); oe:out std_logic; ale:out std_logic; start:out std_logic; add:out std_logic_vector(2 downto 0); end ad; architecture one of ad is type states is(st0,st1,st2,st3,st4); signal current_state,next_state:states:=st0; signal temp:std_logic_vector(7 downto 0); signal lock:std_logic; begin add=001; dataoutale=0;start=0;oe=0;lock=0; next_stateale=1;start=1;oe=0;lock=0; next_stateale=0;start=0;oe=0;lock=0; if (eoc=1)then next_state=st3; else next_stateale=0;start=0;oe=1;lock=1; next_stateale=0;start=0;oe=1;lock=1; next_state=st0; end case; end process; process(clk) begin if(clk event and clk=1) then current_state=next_state; end if; end process; process(lock) begin if lock=1 and lock event then temp=datain; end if; end process; end architecture one; 12 其生成项目符号: 图 6 该模块时序仿真图如下: 图 7 如图: Datain、EOC、CLK:输入端 Dataut、OE、ALE、START、ADD:输出端 当输入时钟信号时,八位数字量在EOC 有高电位变为低电位时,标志着A/D 转 换结束。 2,Dataprocess 功能:将采样数字量转换成 3 位 BCD 码。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dataprocess is port(b_datain:in std_logic_vector(7 downto 0); b_dataout:out std_logic_vector(11 downto 0); end dataprocess; architecture one of dataprocess is signal middata:std_logic_vector(7 downto 0); signal vdata:std_logic_vector(11 downto 0); signal hdata:std_logic_vector(11 downto 0); signal ldata:std_logic_vector(11 downto 0); signal c0:std_logic; 13 signal c1:std_logic; signal c2:std_logic; begin middata=b_datain; hdata=010010000000when middata(7 downto 4)=1111else 010001001000when middata(7 downto 4)=1110else 010000010110when middata(7 downto 4)=1101else 001110000100when middata(7 downto 4)=1100else 001101010010when middata(7 downto 4)=1011else 001100100000when middata(7 downto 4)=1010else 001010001000when middata(7 downto 4)=1001else 001001010110when middata(7 downto 4)=1000else 001000100100when middata(7 downto 4)=0111else 000110010010when middata(7 downto 4)=0110else 000101100000when middata(7 downto 4)=0101else 000100101000when middata(7 downto 4)=0100else 000010010110when middata(7 downto 4)=0011else 000001100100when middata(7 downto 4)=0010else 000000110010when middata(7 downto 4)=0001else 000000000000; ldata=000000110000when middata(3 downto 0)=1111else 000000101000when middata(3 downto 0)=1110else 000000100100when middata(3 downto 0)=1101else 000000100100when middata(3 downto 0)=1100else 000000100010when middata(3 downto 0)=1011else 000000100000when middata(3 downto 0)=1010else 000000011000when middata(3 downto 0)=1001else 000000010110when middata(3 downto 0)=1000else 000000010100when middata(3 downto 0)=0111else 000000010010when middata(3 downto 0)=0110else 000000010000when middata(3 downto 0)=0101else 000000001000when middata(3 downto 0)=0100else 000000000110when middata(3 downto 0)=0011else 000000000100when middata(3 downto 0)=0010else 000000000010when middata(3 downto 0)=0001else 000000000000; c001001 else 0; c101001 else 0; c201001 else 0; vdata(3 downto 0)=hdata(3 downto 0)+ldata(3 downto 0)+0110 when c0=1 else hdata(3 downto 0)+ldata(3 downto 0); vdata(7 downto 4)=hdata(7 downto 4)+ldata(7downto 4)+0111 when c1=1 and c0=1 else hdata(7 downto 4)+ldata(7 downto 4)+0110 when c1=1 and c0=0 14 else hdata(7 downto 4)+ldata(7 downto 4)+0001 when c1=0 and c0=1 else hdata(7 downto 4)+ldata(7 downto 4); vdata(11 downto 8)=hdata(11 downto 8)+ldata(11 downto 8)+0111 when c2=1 and c1=1 else hdata(11 downto 8)+ldata(11 downto 8)+0110 when c2=1 and c1=0 else hdata(11 downto 8)+ldata(11 downto 8)+0001 when c2=0 and c1=1 else hdata(11 downto 8)+ldata(11 downto 8); b_dataout=vdata; end architecture one; 其生成项目符号: 图 8 该模块时序仿真图如下: 图 9 如图: B_Datain:输入,B_Dataout:输出。 将 8 位数字量转化为 3 位 BCD 码 图中 Datain“11011110” , “1101”对应的电压值位 4.16v,其对应的 BCD 编码 为“010000010110” , “1110”对应的电压值为0.28v,其对应的 BCD 编码为 “000000101000” 。低 4 位相加为“1110” ,大于 9,加 6 将其调整为 BCD 码, 其值为 0100,并且向前有一进位。四位相加的结果为 0011,由于低位有进位, 因此最终结果为 0100,。高四位的结果为0100.三位合计值为 4.44v,与4.16+0.28 的结果一样。 3,Leddisplay 功能:用 LED 进行数码显示。 library ieee; 15 use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity leddisplay is port(bcdcode:in std_logic_vector(11 downto 0); ck:in std_logic; led_dp:out std_logic; seg:out std_logic_vector(6 downto 0); sel:out std_logic_vector(1 downto 0); end leddisplay; architecture one of leddisplay is signal num:std_logic_vector(3 downto 0); signal count:std_logic_vector(1 downto 0); begin process(ck) begin if ck event and ck=1 then count=count+1; end if; end process; sel=count; num=bcdcode(3 downto 0) when count=0 else bcdcode(7 downto 4) when count=1 else bcdcode(11 downto 8) when count=2 else 0000; led_dp=1 when count=2 else 0; segsel00=1;sel01=0;sel10=0;sel11sel00=0;sel01=1;sel10=0;sel11sel00=0;sel01=0;sel10=1;sel11sel00=0;sel01=0;sel10=0;sel11null; end case; end process; end architecture dec; 其生成项目符号: 图 12 该模块时序仿真图如下: 图 13 Sel:输入 Sel00,Sel01,Sel10Sel11:输出 如图所示,输出 Sel00,Sel01,Sel10Sel11 随输入 Sel 发生相应的变化。 5,Div library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div is PORT(clk : INstd_logic; clk_div: OUTstd_logic); END div; ARCHITECTURE a OF div IS SIGNAL fre_N : integer range 0 to 100000; 18 SIGNAL clk_tmp: std_logic; BEGIN clk_div = 99999 then fre_N = 0; clk_tmp = not clk_tmp; else fre_N = fre_N + 1; end if; end if; end process; END a; 其生成项目为: 图 14 该模块时序仿真图如下: 图 15 CLK:输入 CLK_DIV:输出 将 CLK 进行时钟分频如图所示。 6,Div1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; 19 entity div1 is PORT(clk : INstd_logic; clk_div: OUTstd_logic); END div1; ARCHITECTURE a OF div1 IS SIGNAL fre_N : integer range 0 to 20000000; SIGNAL clk_tmp: std_logic; BEGIN clk_div = 19999999 then fre_N = 0; clk_tmp = not clk_tmp; else fre_N = fre_N + 1; end if; end if; end process; END a; 其生成项目为: 图 16 该模块时序仿真图如下: 图 17 CLK:输入 CLK_DIV:输出 20 将输入信号 CLK 进行时钟分频如图所示。 六、六、 总体设计电路图总体设计电路图 管脚分配: 图 18 硬件连接及测试: 创建完模块后,再新建一个顶层.bdf 文件,在新的窗口单击按钮 看到 library 库里多了六个元件(如电路图所示): ,可以 图 19 21 图 20 如图所示,图中共有 6 个模块,分别是: AD,Dataprocess,Leddisplay,Decoder_2_to_4_t,Div,Div1 再按以下步骤进行硬件测试 A,VGA 接口连接 B,用连线将电路板上接口正确连接 C,在选对设备和文件之后,将实验箱和显示器电源打开,执行下载命令,把程序 下载到FPGA器件中。 扭动ADC0809模块的变阻器, 就可以在对应数码管上看 到 显示值的变化,变化比较连续、平滑,总体效果比较不错,设计成功。 七、总结 心得: 经过两周的课程设计,在老师的辅导下,查阅了相关资料,写出了与课题有 关的文献综述,翻译了英文资料。对课题内容有了更深一步的了解。在 VHDL 硬 件描述语言下,设计了该数字式电压表。并进行了硬件设计,以及在Quartus 编译平台上仿真得出结果,验证了系统的可行性。由测试结果,可看出该仪表测 量范围较宽,测量精度较高,能够满足物理实验中电量的测量要求。经实际使用 证明,系统运行稳定、操作方便。 通过对课题的研究, 加深了我对数字电压表一般设计原理的理解,同时也让 我初步了解了从算法到系统设计的整个过程。在课题研究的过程中,我总结出在 进行系统设计之前应该仔细分析考虑可能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论