




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目目 录录 摘要摘要.1 0 0 引言引言.1 1 1 系统总体设计系统总体设计.2 2 2 系统组成电路及其工作原理系统组成电路及其工作原理.2 2.1 FPGA 核心模块、按键输入及数码显示模块.3 2.1.1 FPGA 核心模块的内部结构.3 2.1.2 FPGA 核心模块的各组成单元.3 2.1.3 Nios软核处理器.3 2.1.4 分频器(FANA)模块.4 2.1.5 波形产生器(delta、square 和 sin)模块.4 2.1.6 波形选择器(CHANGE)模块.5 2.2 外围电路设计.5 2.2.1 D/A 转换器.5 2.2.2 低通滤波、幅度调节和峰值保持电路.6 2.2.3 A/D 转换器.7 3 3 软件设计软件设计.8 3.1 C 语言程序设计.8 3.2 VHDL、VERILOGHDL 语言程序设计 .8 4 4 系统测试及结果分析系统测试及结果分析.9 5 5 结束语结束语.10 6 6 致谢致谢.10 参考文献参考文献:.10 附录附录:.11 1 基于基于 FPGAFPGA 的多波形发生器的设计的多波形发生器的设计 作者:温 聪 指导老师:林 汉 副教授 湛江师范学院信息科学与技术学院 摘要摘要: :文章介绍了一种基于 FPGA 芯片的,利用 VHDL 或 VerilogHDL 语言及 Nios II 嵌入式处 理器共同实现的多功能波形发生器。该波形发生器可以产生正弦波、方波和三角波,频率从 1KHz 到 10KHz,步进为 100Hz。该系统以 Altera 公司的 CycloneII 系列现场可编程门阵列(FPGA)为数字平台, 在 FPGA 目标芯片 EP2C35F672C6N 上将频率选择信号进行译码,同时对系统时钟进行分频,得到相 应的时钟触发信号,触发数字波形的离散样点依次输出到 D/A 转换器进行数模转换,得到模拟信号 波形。本设计为生产低成本,高性能,操作简易的电子系统测试信号提供一种简单易行的方法。 关关键词键词: :FPGA;VHDL;Nios II;D/A Based on FPGA in the design of multi-waveform generator Wen Cong Information Science and Technology School Zhanjiang Normal University,zhanjiang524048,China Abstract: This paper presents a FPGA-based chips using VHDL or VerilogHDL the language and the Nios II embedded processor to achieve the multi-waveform generator. The waveform generator can produce sine, square and triangular waves, the frequency from 1KHz to 10KHz, stepping to 100Hz.The system CycloneII series of Alteras field programmable gate array (FPGA) for digital platforms, in the target FPGA core EP2C35F672C6N signals will be frequency-selective decoding, at the same time the system clock frequency divided by the corresponding clock signal to trigger, the discrete digital waveform trigger points followed by output to D / A converter for digital-to-analog conversion, the analog signal waveform. The design for the production is low-cost, high performance, which provides a simple and easy method to test the signal of an electronic system. Keywords: FPGA; EDA;VHDL;Nios II;D/A 0 0 引言引言 现有的波形信号发生器,大都是利用单片机(CPU)为核心设计的,这使得电路控制比较方便, 电路简单化,小型化,但同时也存在着许多不足。例如系统的可靠性通常不高,其主要原因是,以 软件运行为核心的 CPU 的指令地址指针在外部干扰下,容易发生不可预测的变化,而使运行陷入非 法循环中,使系统瘫痪。 EDA 技术的出现,使得完全利用硬件来实现波形信号发生成为可能1。例如状态机就是很好的选 择,它的运行方式类似于 CPU,但却有良好的可靠性和高速的性能2。因为在外部强干扰情况下, 2 状态机的死机(进入非法状态)情况是可预测的,这包括非法状态的数量和进入状态的可测性,以 及是否已经进入的非法状态的可判断性。因为状态机的非法状态的编码方式和数量是明确的,从而 确保了恢复正常状态各种措施的绝对可行性。 为此,本设计提出并实现了一种利用数字调制技术3并基于现场可编程门阵列(FPGA)器件实现信 号发生器的方法4。该方法不仅能大幅度减小信号发生器的体积,而且产生的信号波形质量好,功 能多,可以满足大多数场合下的应用需求。 1 1 系统总体设计系统总体设计 按照可编程片上系统(SOPC)的思想,在系统中嵌入一个 Nios II 软核5,利用 Altera 中的 CyloneII 系列 EP2C35 器件,通过 Quartus II 开发工具,完成了 FPGA 所需的硬件系统设计及其软 件开发。硬件设计符合基于 VHDL 硬件描述语言的 EDA 开发流程。它是根据硬件系统要实现的功能 合理地使用各种 IP,并为各个实例定义地址范围、输出端口和时钟。经过仿真、综合及布线后形 成硬件配置文件。软件设计类似于传统的嵌入式软件设计,它是在硬件设计的基础上根据处理器所 支持的指令集及在集成开发环境 Nios II IDE 下编写的程序代码,然后对代码进行编译与调试。最 终使程序在硬件上或者在指令仿真状态下运行。在 FPGA 内部,以软核 CPU Nios II 为控制核心, 用 VHDL 语言分别对输出波形控制、分频控制和三角波、正弦波、方波发生的各个模块进行子程序 编程6,并把每一个模块转换成图形文件,然后在原理图编辑框中调用这些图形模块,并连接电路。 还通过按键控制模块来实现对频率和波形的变换,数码管模块来进行频率和电压幅值的显示。实现 了系统的高度集成。FPGA 硬件系统作为数字系统产生数字量,外围电路加上高速数模转换器 DAC0832 和模数转换器 ADC0804,分别将数据波形转换为模拟波形和将输出的电压转换成数值,以 便于电压显示7。 通过 Nios II 和 VHDL 的相互结合,从而实现了完整的多种波形发生器。设计中利用 FPGA 实现所有 数字部分的设计,从而最大限度地实现了集成化。本设计的系统框图如图 1.1 所示。 2 2 系统组成电路及其工作原理系统组成电路及其工作原理 从系统总框图中,可见本设计可分为两个方面三个组成部分,两个方面分别是数字电路方面 (见虚线框框部分)和模拟电路方面;而电路又可以分成三个组成部分,分别是:由 FPGA 核心模 图 1.1 系统总框图 3 图 2.1 FPGA 的内部结构图及引脚连接 块、按键输入及数码显示模块构成的数字信号处理电路;由 D/A 转换、波形平滑和幅度调节组成的 模拟信号输出电路;由峰值保持和 A/D 转换模块组成的电压幅值数字化电路。本设计充分利用硬件 电路的可靠性、稳定性和芯片的方便性,使整体电路达到比较高的稳定性。 2.12.1 FPGAFPGA 核心模块、按键输入及数码显示模块核心模块、按键输入及数码显示模块 FPGA 核心模块在本设计中作为主控部分,完成对按键输入的检测、信号输出频率的控制和相 应的频率及电压幅度的数字显示等工作。其内部结构图及引脚连接如图 2.1 所示。 2.1.12.1.1 FPGAFPGA 核心模块的内部结构核心模块的内部结构 FPGA 核心模块的设计是按照可编程片上系统(SOPC)的思想,在系统中嵌入一个 Nios II 软核, 用 VHDL 语言分别对输出波形控制、分频控制和三角波、正弦波、方波发生的各个模块进行子程序 编程,并把每一个模块转换成图形文件,然后在原理图编辑框中调用这些图形模块,并连接电路。 2.1.22.1.2 FPGAFPGA 核心模块的各组成单元核心模块的各组成单元 本设计的 FPGA 核心模块由 4 个功能模块组成: 1.以 Nios软核为核心的键盘处理、频率控制及频率、电压值显示模块; 2.分频器(FANA)模块; 3.波形产生器(分别是三角波、方波和正弦波)模块; 4.波形选择( CHANGE)模块。 下面分别对以上各个模块进行分析和实现。 2.1.32.1.3 NiosNios软核处理器软核处理器 Nios II 系列嵌入式处理器是一款通用的 RISC 结构软核 CPU,具有 32 位指令、32 位数据和 4 地址路径、32 位通用寄存器和 32 个外部中断源。使用同样的指令集架构(ISA)可完全与二进制代 码兼容,设计者可根据系统需求的变化更改 CPU。其指令和数据总线符合 AVALON 总线规范。集成 开发环境中 NiosII IDE 为 GCC 编译器提供了一个图形化用户界面,Nios II IDE 编译环境能更容 易地设计出 Altera 的 Nios II 处理器软件。 (1) Nios II CPU 系统的设计8 FPGA 芯片采用 Altera 公司 CyctoneII 系列的 EP2C35F672C6N,系统时钟 50MHz,根据所设计 的多波形发生器的要求,在 SOPC Builder 所构建的 Nios II CPU 系统中有以下可选的内核: Nios II/f(快速)最高的系统性能,中等资源利用率; Nios II/s(标准)高性能,低资源利用率; Nios Il/e(经济)低性能,最低的资源利用率。考虑本系统的运算量不大,而且采用的 芯片属于较低端的产品,因此选用 Nios II 经济型内核。 (2) 键盘处理程序设计 利用扫描法对键盘进行检测,若有键盘按下,则产生相应的操作。本设计在频率控制上,只设置 了两个按钮,一个是 1KHz 步进量的控制,另一个是 100Hz 步进量的控制,而每按一次钮时,只有 递增而没有递减。通过按键的改变便可以产生不同的分频系数,不同的分频系数便有不同的频率输 出,从而实现了输出频率的控制。 (3) 频率显示及电压幅度显示程序设计 输出的模拟电压经过峰值保持和 A/D 转换器采样,由模拟量变为数字量直接由 Nios II CPU 通 过 PIO 口读取,经处理后,送到数码管显示相应的幅值。而频率显示则由键盘处理程序直接产生一 个相应数值送数码管显示。 2.1.42.1.4 分频器分频器(FANA)(FANA)模块模块 模块 FANA 功能是对外部时钟进行分频,作为提供给系统各个模块的工作时钟,通过改变对外 部时钟的分频参数实现输出波形频率可调,参数计算公式如下: f f Y osc 64 其中是晶振频率,是输出信号频率,Y 是分频系数。 osc ff 具体程序见附录 2。 2.1.52.1.5 波形产生器(波形产生器(deltadelta、squaresquare 和和 sinsin)模块)模块 波形产生器模块是由正弦波、三角波和方波模块组合而成。每种波形数字化描述频率均采用波 形频率的 64 倍,以保证产生的波形稳定且不失真。 三角波的产生:通过由全 0 不断加同一个数,到全 l 之后再不断减同一个数来实现。 方波的产生:通过交替输出全 0 和全 l,给以适当的延时实现。 正弦波的产生:通过预先计算出一个正弦波表,然后查表输出实现。 5 图 2.3 DAC0832 引脚图 具体程序见附录 3。 2.1.62.1.6 波形选择器波形选择器(CHANGE)(CHANGE)模块模块 模块 CHANGE 功能是选择正弦波、三角波和方波中的一种波形进行输出。为了使输出波形的幅 度稳定,本设计采用了保险的程序写法,具体 Verilog 实现9 见附录 4。 2.22.2 外围电路设计外围电路设计 其外围电路可以分成两部分描述:一是由 D/A 转换、波形平滑和幅度调节组成的波形输出电路; 二是由峰值保持和 A/D 转换模块组成的电压数字化电路。其实这两部分是可以集成为一个整体外围 电路10,如图 2.2 所示。 2.2.12.2.1 D/AD/A 转换器转换器 DAC0832 是双列直插式 8 位 D/A 转换器,能完成数 字量输入到模拟量(电流)输出的转换。图 2.3 为 DAC0832 的引脚图。其主要参数如下:分辨率为 8 位,转换时间为 1s,满量程误差为1LSB,参考电压为(-10+10)V,供电电源为(+5+15)V, 逻辑电平输入与 TTL 兼容。在 DAC0832 中有两级锁存器,第一级锁存器称为输入寄存器,它的允许 锁存信号为 ILE,第二级锁存器称为 DAC 寄存器,它的锁存信号也称为通道控制信号。XFER 图 2.2 外围电路的 SCH 图 6 图 2.3 中,当 ILE 为高电平,片选信号和写信号为低电平时,输入寄存器控制信号CSWR1 为 1,这种情况下,输入寄存器的输出随输入而变化。此后,当由低电平变高时,控制信号WR1 成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据 DB 的 变化而变化。 对第二级锁存来说,传送控制信号和写信号同时为低电平时,二级锁存控制信号XFER2WR 为高电平,8 位的 DAC 寄存器的输出随输入而变化,此后,当由低电平变高时,控制信号变2WR 为低电平,于是将输入寄存器的信息锁存到 DAC 寄存器中。 图 2.3 中其余各引脚的功能定义如下: (1) DI7DI0 :8 位的数据输入端,DI7为最高位。 (2) IOUT1 :模拟电流输出端 1,当 DAC 寄存器中数据全为 1 时,输出电流最大,当 DAC 寄存 器中数据全为 0 时,输出电流为 0。 (3) IOUT2 :模拟电流输出端 2,IOUT2与 IOUT1的和为一个常数,即 IOUT1IOUT2常数。 (4) RFB :反馈电阻引出端,DAC0832 内部已经有反馈电阻,所以 RFB端可以直接接到外部运 算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。 (5) VREF :参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定 0 至 255 的数 字量转化出来的模拟量电压值的幅度,VREF范围为(-10+10)V。VREF端与 D/A 内部 T 形电 阻网络相连。 (6) Vcc :芯片供电电压,范围为(+5+15)V。 (7) AGND :模拟量地,即模拟电路接地端。 (8) DGND :数字量地。 图 2.4 为 FPGA 和 DAC0832 直通方式输出连接图,运放输出电路输出电压为 UOUT=-(D/256) *VREF。 图 2.4 FPGA 和 DAC0832 直通方式输出连接图 7 2.2.22.2.2 低通滤波、幅度调节和峰值保持电路低通滤波、幅度调节和峰值保持电路 从图 2.5 中可见,此部分电路主要有集成运算放大器电路构成,可分三节电路分析:第一节是低 通滤波电路,滤波效果可通过开关 S1 进行切换;第二节是电路幅度调节电路,输出幅度的大小可 由电位器 PR1 进行调节,信号输出有直接输出和电容耦合输出两种;第三节是峰值保持电路(PKD) , 通过这个电路能有效地把输出信号的幅值保持下来,以便 A/D 转换。 2.2.32.2.3 A/DA/D 转换器转换器 ADC0804 是一个早期的 A/D 转换器,因其价格低廉而在 要求不高的场合得到广泛应用。ADC0804 是一个 8 位、单通 道、低价格 A/D 转换器,主要特点是:模数转换时间大约 100us;方便的 TTL 或 CMOS 标准接口;可以满足差分电压输 入;具有参考电压输入端;内含时钟发生器;单电源工作时 (0V5V)输入信号电压范围是 0V5V;不需要调零,等等。 ADC0804 是一个 20 引脚的芯片,引脚排列如图 2.6 示。 所有引脚定义如下: :片选信号。低电平有效,高电平时芯片不工作,CS :外部读数据控制信号。此信号低电平时 ADC0804 把 RD 已转换的数据加载到 DB 口。 :外部写数据控制信号。此信号的上升沿可以启动 ADC0804 的 A/D 转换过程。WR CLK IN:时钟输入引脚。ADC0804 使用 RC 振荡器作为 A/D 时钟,CLK IN 是振动器的输入端。 :转换结束输出信号。ADC0804 完成一次 A/D 转换后,此引脚输出一个低脉冲。对单片机INTR 可以称为中断触发信号。 Vin(+):输入信号电压的正极。 Vin(-):输入信号电压的负极。可以连接到电源地。 A GND:模拟电源的地线。 V/2:参考电源输入端。参考电源取输入信号电压(最大值)的二分之一。例如输入信号电 REF 图 2.5 低通滤波、幅度调节和峰值保持电 路 图 2.6 ADC0804 引脚排列 8 3.1 主程序流程图 压是 0V5V 时,参考电源取 2.5V;输入信号电压是 0V4V 时,参考电源取 2.0V。 D GND:数字电源的地线。 DB8DB0:数字信号输出口,连接单片机的数据总线。 CLK R:时钟输入端。 Vcc:5V 电源引脚。 模数转换器 ADC0804 的工作分为三个过程: 复位中断触发信号 信号表明 ADC0804 转换已经结束,它提示单片机随时可以读取转换结果,是 ADC0804 的一个输 出信号。一般情况下,启动 A/D 转换前应该复位这个信号,以等待新的转换完成后 ADC0804 发出新 的信号,这样才可以读到新的转换结果。复位信号的时序如图 2.7 中的图 A,在实现片选 (0)的前提下,使用一个读信号的下降沿就可以复位信号。CS 启动 ADC0804 的 A/D 转换 ADC0804 中的 A/D 转换器在满足一定条件时开始一个转换过程,这个条件就是:在实现片选为 低电平的前提下,引脚上出现的一个上升沿。启动 A/D 转换的时序如图 2.7 中的图 B,实现片选以 后,使用一个写信号就可以启动一个转换过程。 读取转换结果 在 A/D 转换结束以后,ADC0804 的引脚将给出一个低脉冲, 如果检测到这个低脉冲,便可以读取 ADC0804 的转换结果。 3 3 软件设计软件设计 本设计的软件部分是运用 NiosII IDE 开发软件和 C 语言 来对 NiosII 核进行编程,用 Quartus II 7.2 软件来进行数字 电路模块的设计,用 VHDL、VerilogHDL 语言来编写程序。 3.13.1 C C 语言程序设计语言程序设计 C 语言程序设计流程图如图 3.1 所示。 3.23.2 VHDLVHDL、VerilogHDLVerilogHDL 语言语言程序设计程序设计 用 VHDL 语言分别对输出波形控制、分频控制和三角波、 正弦波、方波发生的各个模块进行子程序编程,并把每一个模 图 2.7 ADC0804 的 A/D 转换时序 9 块转换成图形文件,然后在原理图编辑框中调用这些图形模块,并连接电路。用按键 KEY1 控制 delta,square,sin 波形选通,最后将 8 位输出接 AD0832 的数据输入口,再通过 D/A 转换。即可 从示波器看到输出波形光栅。按下按键的次数不同,将输出不同频率的波形。从 NiosII 输出 10 位 频率控制字,转换为相对应的整数输出;由分频模块 fana.vhd 对输入时钟 clk 分频,对分频计数 a 逐次减 1,当 a 减到 0 时,输出后;即为三角波模块 (delta)、方波模块(square)、正弦波模块 (sin)的输入时钟 clk。三角波模块 delta.vhd 用于设定一个变量 tmp,其定义范围为 00000111- 11111000,每到来一个脉冲,对其分别输出+8 或-8,然后把改变后的 tmp 送到输出 q,以便生成三 角波信号。方波模块 square.vhd 用于设定一个变量 cnt,每到来一个脉冲,检测它是否小于 32。 若小于 32,则把高电平送到输出,并对 cnt +l,否则就输出低电平,并赋值 cnt 为 0,以便生成 方波信号。正弦波模块 sin.vhd 用于定义正弦数据表,每到一个脉冲,逐次查找并输出相应的正弦 数据,以便生成正弦波形。波形选择模块 change.vhd 用于控制输出波形的选通。 4 4 系统测试及结果分析系统测试及结果分析 采用该信号发生器能产生正弦波、方波和三角波三种周期性波形,且输出波形无明显失真。图 4.1 给出三种波形在逻辑分析仪中仿真的结果11,图 4.2、4.3、4.4 分别为方波、三角波、正弦波 的实际输出波形图。从图 4.1 中可以看出,三种波形的输出是相当完整的,频率的控制也相当准确。 通过实验测试,该信号发生器在 1 k 负载条件下,其各种波形的输出电压峰峰值在 05V 范围 内连续可调;且最小的电压输出为 0.05V,输出电压的变化是通过电位器进行调节,并且通过数码 管可实时显示输出信号的类型、幅度和频率。 图 4.1 用逻辑分析仪仿真的结果 图 4.3 三角波的实际输出 图 4.2 方波的实际输出 10 图 4.4 正弦波的实际输出 5 5 结束语结束语 通过该次毕业设计发现自己所学知识很缺乏,特别是有关 VHDL 编程方面。同时让我对以前所 学过的理论知识回顾了一遍,并进一步巩固,自己的实践能力的到进一步的提高。 6 6 致谢致谢 在此,我要感谢我的导师林汉老师,谢谢他一直以来给我的帮助。还感谢在毕业设计期间所 有给予我帮助的老师和同学。 参考文献参考文献: 1 潘松、黄继业EDA 技术实用教程M北京:科技出版社,2002.1 2 王振红数字电路设计与应用实践教程北京:机械工业出版社,2003.6 3 萧家源,聂风仁校.电子仪表原理与应用北京:北京科学出版社,2005 4 褚振勇,翁木云.FPGA 设计及应用M西安:西安电子科技大学出版社,2002 5 江国强SOPC 技术应用北京:机械工业出版社,2006.9 6 范秋华,张冬梅,基于 VHDL 的可编程分频器在波形发生器中的应用J.青岛大学学报, 2003, 16(4):68-71 7 侯伯亨,顾新VHDL 硬件描述语言与数字逻辑电路设计M西安:西安电子科技大学出版 社,2004 8 周立功SOPC 嵌入式系统基础教程.1北京:北京航空航天大学出版社,2006.1 9 王金明数字系统设计与 Verilog HDLM北京:电子工业出版,2002.1 10 王昊、李昕集成运放应用电路设计 360 例北京:电子工业出版社,2007.1 11 周立功SOPC 嵌入式系统实验教程.1北京:北京航空航天大学出版社,2006.1 11 附录附录: : 附录 1 外围电路图 附录 2 分频器程序 library ieee; use ieee.std_logic_1164.all; entity fana is port(a:in integer range 0 to 1023; clk:in std_logic; q:out std_logic); end fana; architecture chu_arc of fana is begin process(clk) variable b,d:std_logic; variable c:integer range 0 to 1023; begin if clkevent and clk=1then 12 if b=0then c:=a-1; b:=1; else if c=1 then b:=0; d:=not d; else c:=c-1; end if; end if; end if; q=d; end process; end chu_arc; 附录 3:波形产生程序 方波 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity square is port (clk,clr:in std_logic; q: out integer range 0 to 255); end square; architecture sq_1 of square is signal a: bit; signal cnt:std_logic_vector(5 downto 0); begin process(clk,clr) begin if clkevent and clk=1 then cnt= cnt + 1; if cnt 32 then 13 q= 255; else q= 0; end if; end if; end process; end sq_1; 三角波 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity delta is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0); end delta; architecture delta_arc of delta is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1then if a=0then if tmp=11111000then tmp:=11111111; a:=1; else tmp:=tmp+8; end if; else if tmp=00000111then tmp:=00000000; a:=0; 14 else tmp:=tmp-8; end if; end if; end if; q=tmp; end process; end delta_arc; 正弦波 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sin is port(clk,clr:in std_logic; d:out integer range 0 to 255); end sin; architecture sin_arc of sin is begin process(clk,clr) variable tmp:integer range 0 to 63; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd=0; end case; end if; end process; end sin_arc; 附录 4:波形输出控制程序 module change(clk,KEY1,dlta,sqra,sina,q_out,selt); input clk; input KEY1; input 7:0dlta,sqra,sina; output 7:0q_out; output 1:0selt; 17 reg 9:0 cnt; reg 1:0 tmp; reg 7:0 q_out; reg 1:0 selt; initial begin tmp=2b00; cnt=500; end always (posedge clk) begin if(KEY1=1b0) cnt=0; else if(cnt1000) cnt=cnt+1; end always (posedge clk) begin if(cnt=100) begin if(tmp2b10) tmp=tmp+1; else tmp=2b00; end end always (posedge clk) begin case(tmp) 2b00: q_out=dlta; 2b01: q_out=sina; 2b10: q_out=sqra; endcase end always (posedge clk) begin 18 case(tmp) 2b00: selt=1; 2b01: selt=2; 2b10: selt=3; endcase end endmodule 附录 5:100K 分频器,向 A/D 芯片提供时钟频率 module clk_div(reset,f_50m,f_100k); input reset,f_50m; output f_100k; reg f_100k; reg 12:0i; always (posedge f_50m) begin if(!reset) begin f_100k=0; i=0; end else begin if(i=500) begin i=0; f_100k=f_100k; end else i=i+1; end end endmodule 附录 6:控制 A/D 周期转换程序 19 module ad_clk(reset,f_50m,rd,wd); input reset,f_50m; output rd,wd; reg rd,wd; reg 31:0i; always (posedge f_50m) begin if(!reset) begin rd=0; wd=0; i=0; end else begin if(i= =5000000) begin i=0; wd=wd; rd=0; end else i=i+1; end end endmodule 附录 7:C 语言程序设计 /* * Hello World example. * This example prints Hello from Nios II to the STDOUT stream. It runs on * the Nios II standard, full_featured, fast, and low_cost example * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT * device in your systems hardware. * The memory footprint of this hosted application is 69 kbytes by default * using the standard reference design. 20 * For a reduced footprint version of this template, and an explanation of how * to reduce the memory footprint for a given application, see the * small_hello_world template. */ #include #include string.h #include system.h #include sys/alt_irq.h #include altera_avalon_pio_regs.h #define u8 alt_u8 #define u32 alt_u32 #define a1 10 #define a2 100 #define a3 1000 #define a4 10000 #define a5 100000 #define a6 1000000 #define a7 10000000 /*8 int led_display(u32 data1,u32 data2,u32 data3) u32 d0,d1,d2,d3,d4,d5,d6,d7,led; d0=0;/NO.0 ,display 0 d1=data1%a1;/NO.1 ,display 0 d2=data1/a1;d2=d2%a1;/NO.2 ,display value d3=data1/a2;d3=d3%a1;/NO.3 ,display value d4=data2%a1;/NO.4 ,display value d5=data2/a1;d5=d5%a1;/NO.5 ,display value d6=data3;/NO.6 ,display 0 d7=0;/NO.7 ,display 0 /move bit d1=4;/move the value to the NO.1 d2=8;/move the value to the NO.2 d3=12;/move the value to the NO.3 d4=16;/move the value to the NO.4 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中图科学院遗传与发育生物学研究所种子创新全国重点实验室主任招聘1人考试参考题库及答案解析
- 2025邢台平乡县招聘人事代理教师50人考试参考题库及答案解析
- 2025嘉兴市属事业单位高层次人才招聘40人-统考备考考试题库附答案解析
- 银行与保险跨平台合作合同范例解读
- 2025年合肥某国有企业工程公司工作人员招聘8名考试参考题库及答案解析
- 2025四川远歌农业集团有限公司招聘工作人员6人考试参考题库及答案解析
- 2025河南驻马店育英中学教师招聘21人考试参考题库及答案解析
- 古诗十九首之白马篇:高中语文课程教案
- 2025重庆九龙坡区黄桷坪街道办事处招聘社会工作者1人备考考试题库附答案解析
- 一个神秘的夜晚抒情作文8篇
- 2024年湖南省高中学业水平合格考物理试卷真题(含答案详解)
- 水机空调安装合同范本
- 本校学生对学校食堂满意度调查问卷
- 典范英语7the king of football概括
- DL-T-710-2018水轮机运行规程
- 我和我的祖国歌词
- 2023版《思想道德与法治》(绪论-第一章)绪论 担当复兴大任 成就时代新人;第一章 领悟人生真谛 把握人生方向 第3讲 创造有意义的人生
- (2024年)发生输液反应时应急预案及处理流程
- 水域救援知识课件
- 军兵种知识教案课件
- 国际贸易理论与实务(陈岩 第四版) 课件全套 第0-16章 绪论、国际贸易理论、国际贸易政策-国际贸易方式
评论
0/150
提交评论