基于fpga的直接数字频率合成器的设计毕业设计说明书(编辑修改稿)内容摘要:
这里只需了解系统的轮廓即可,后面会详细介绍各模块的设计与实现。 河南理工大学毕业设计(论文)说明书 15 3 模块设计与实现 如前面所述,顶层实体由 3个模块构成: 微控制器接口模块、相位累加器模块及双端口 RAM 模块。 由 8 个比例乘法器级联组成的分频器模块以端口定义的形式例化在微控制器模块中,属于后者的子模块,但是由于比例乘法器的本设计中所发挥的作用很大,加之相关资料少之又少,为了加深读者的领悟,决定单独作为一节。 微控制器接口模块 微控制器接口 向 8 位、 16 位、 32 位微处理器级微控制器提供友好的操作接口,如图 31所示。 其输入引脚前面已经介绍过,这里不再重复。 现在,介绍一下输出引脚。 图 31 ddsen:相位累加器使能,有效时为高电平; fclk:分 频时钟,作为相位累加器的输入时钟; m:相位累加步长, m=2n , n=0,1,2, „, 7; dataout:数据输出,作为 RAM 输入数据; addrout:地址输出,作为 RAM 输入地址; wern: RAM 写使能信号; wrclock: RAM 写时钟信号。 前面已经提到, DDS 内部实现了 6 个寄存器,其中, 4 个位分频寄存器,河南理工大学毕业设计(论文)说明书 16 1个位控制寄存器, 1个位数据输入寄存器,这些寄存器的地址在表 31中。 表 31 寄存器地址 名称 访问属性 地址 FWORD1 Write 000 FWORD2 Write 001 FWORD3 Write 010 FWORD4 Write 011 DDSCR Write 100 DATA Write 101 分频寄存器 ( FWORD1FWORD4) 以 FWORD1 为例,如表 32 所示。 分频寄存器用于存储分频系数,分频模块由 8 个 BCD 比例乘法器构成。 每一个比例乘法器需要 4 位二进制码来确定分频系数, 4 8=32 bit,也就是 4 byte。 FWORD1 对应第一级和第二级比例乘法器, FWORD2对应第三级和第四级比例乘法器,以此类 推, FWORD4 对应第七级和第八级比例乘法器。 表 32 分频寄存器 FWORD1 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 3BCD1 2BCD1 1BCD1 0BCD1 3BCD2 2BCD2 1BCD2 0BCD2 控制寄存器( DDSCR) 如表 33 所示,控制寄存器只有 4 位是有意义的, ddsen 为相位累加器使能,当其为有效时(逻辑 1),相位累加器工作,输出波形。 m m m0 是相位累加步长控制字,由于系统设计中规定相位累加步长 m=2n , n=0,1,2, „, 7,所以使用 3位表示他们足够了,对应的累加步长值如表 34所示。 表 33 控制寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DDSEN 0 0 0 0 M2 M1 M0 河南理工大学毕业设计(论文)说明书 17 表 34 m2m1m0 与相位累加步长 m对照表 m2m1m0 m 000 1 001 2 010 4 011 8 100 16 101 32 110 64 111 128 数据输入寄存器( DATA) 如表 35所示,微控制器通过数据输入寄存器缓冲,将数据写入双端口 RAM中。 复位时,地址为 0,每向 DATA 寄存器写一次数据,地址自动加 1,直到地址写满,自动清零,准备下一次 写入过程。 这意味着可以重复多次写波形数据,从而实现任意波形输出和动态波形输出的功能。 表 35 控制寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DATA7 DATA6 DATA5 DATA4 DATA3 DATA2 DATA1 DATA0 本模块通过片选信号、地址选通信号、数据选通信号来锁定地址和数据,当片选 信号 CS 和地址选通信号 AS 有效时,根据地址总线内容使能对应寄存器。 在检测到数据选通信号 DS 下降沿后,在系统时钟的上升沿将数据写入选中的寄存器中。 微控 制器接口模块的状态机如图 32所示: (1) IDLE。 当系统上电或复位后,微控制器接口处于此状态。 此状态等待片选信号有效和 AS 信号的下降沿,当条件满足时,状态机切换到 STROBE 状态。 (2) STROBE。 当片选信号有效时,状态机在此状态等待,直到 DS 信号出现下降时沿,切换到 DATA_LAUNCH 状态;当片选信号无效时,状态机切换到 IDLE状态。 河南理工大学毕业设计(论文)说明书 18 (3) DATA_LAUNCH。 此状态只持续 1个时钟周期,在时钟上升沿写入数据,返回 IDLE 状态。 图 32 微控制器接口状态机 文件 interface 内部的各进程说明: 第一个进程延迟信号,目的是检测信号跳变。 第二个进程是状态寄存器,同步状态。 第三个进程是主状态机。 第四个进程是写 RAM 状态机。 第五个进程根据地址译码,使能对应寄存器。 第六个进程根据使能,写对应寄存器。 描述微控制器接口模块的 VHDL 程序如下: LIBRARY IEEE。 USE。 USE。 USE。 ENTITY interface IS port( 与微控制器接口信号 全局复位 reset : IN STD_LOGIC。 全局时钟 河南理工大学毕业设计(论文)说明书 19 clk : IN STD_LOGIC。 地址总线 addrbus : IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 数据总线 databus : IN STD_lOGIC_VECTOR(7 DOWNTO 0)。 片选 cs : IN STD_LOGIC。 地址选通 as : IN STD_LOGIC。 数据选通 ds : IN STD_LOGIC。 与内部模块接口信号 DDS 扫频使能 ddsen : OUT STD_LOGIC。 经比例乘法器分频后的时钟 fclk : OUT STD_LOGIC。 步长 m : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 数据输出,送至双端口 RAM dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 地址输出,送至双端口 RAM addrout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 双端口 RAM 写使能 wren: OUT STD_LOGIC。 双端口 RAM 写时钟 wrclock : OUT STD_LOGIC )。 END interface。 ARCHITECTURE rtl of interface IS 元件说明 8 个比例乘法器级联 河南理工大学毕业设计(论文)说明书 20 COMPONENT fre_div PORT( 输入时钟 FIN : IN STD_LOGIC。 分频系数 BCD1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD3 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD5 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD6 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD7 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 BCD8 : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 分频时钟 FOUT : OUT STD_LOGIC )。 END COMPONENT。 常数声明 CONSTANT RESET_ACTIVE : STD_LOGIC := 39。 039。 CONSTANT FWORD1_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 000。 CONSTANT FWORD2_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 001。 CONSTANT FWORD3_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 010。 CONSTANT FWORD4_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 011。 CONSTANT DDSCR_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 100。 CONSTANT DATA_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 101。 信号声明 SIGNAL as_delay : STD_LOGIC。 SIGNAL ds_delay : STD_LOGIC。 SIGNAL bcd8 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd7 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd6 : STD_LOGIC_VECTOR(3 downto 0)。 河南理工大学毕业设计(论文)说明书 21 SIGNAL bcd5 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd4 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd3 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd2 : STD_LOGIC_VECTOR(3 downto 0)。 SIGNAL bcd1 : STD_LOGIC_VECTOR(3 downto 0)。 状态机定义 TYPE STATE_TYPE IS (IDLE,STROBE,DATA_LAUNCH)。 状态机信号 SIGNAL prs_state, next_state : STATE_TYPE。 状态机定义 TYPE WR_STATE_TYPE IS (wr_idle,wr_high,wr_low)。 状态机信号 SIGNAL wr_state : WR_STATE_TYPE。 SIGNAL DDSCR_reg : STD_LOGIC_VECTOR(7 downto 0)。 SIGNAL wrclock_reg : STD_LOGIC。 SIGNAL wren_reg : STD_LOGIC。 SIGNAL ramaddress : STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL ramdata : STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL fout : STD_LOGIC。 FWORD1 寄存器使能 SIGNAL f1_en : STD_LOGIC。 FWORD2 寄存器使能 SIGNAL f2_en : STD_LOGIC。 FWORD3 寄存器使能 SIGNAL f3_en : STD_LOGIC。 FWORD4 寄存器使能 SIGNAL f4_en : STD_LOGIC。 DDSCR 寄存器使能 SIGNAL cr_en : STD_LOGIC。 DDSDATA 寄存器使能 SIGNAL data_en : STD_LOGIC。 河南理工大学毕业设计(论文)说明书 22 BEGIN Delayed Signals Detection Process 检测延迟信号 Delay_Signals_Proc: PROCESS(reset,clk) BEGIN IF(reset = RESET_ACTIVE) THEN as_delay = 39。 13。基于fpga的直接数字频率合成器的设计毕业设计说明书(编辑修改稿)
相关推荐
0 进行温度采集,将采集到的温度数字直接以数字信号传输给 FPGA 控制器,控制器通过比较采集的温度和用户设置的温度来做出发送降温还是加热的控制信号给空调机。 同时通过 FPGA 芯片还可以实现定时和控制显示,使用 6 个数码管将传感器测量到的温度,设置的温度、定时时长都显示出来。 其方框图 32如下: 图 32 基于 FPGA 的空调控制系统框图 方案论证与确定 通过比较两个方案,方案 1
来时,对输入的逻辑信号进行一次移位并输出。 使用 VHDL 语言编程并在 Quartus II 中生成的该模块符号图如图 所示。 CLKLOADD[7..0]Q[7..0]SHIFTXinst 循环移位寄存器的仿真结果如图 所示。 图 中 CLK 为时钟信号, LOAD 为工作信号 , D 为预置信号, Q 为输出观察信号。 从图中可以看出,当时钟信号上升沿到来且 LOAD 信号处于低电平时 ,
4)用 C 语言完成了系统中单片机控制的的软件设计。 ( 5)对频率计的系统性能进行分析,通过分析得出,本设计的测频范围是~50MHz,测量精度为百万分之一,被测信号的幅度为。 本文分 5 章介绍了基于 FPGA 的等精度数字频率计的设计原理、设计步骤,性能分析等。 兰州交通大学毕业设计(论文) 3 2 系统设计的相关理论 频率测量方法的研究 常用测频方案 在电子技术中,频率是最基本的参数之一
入式开发软件、可编程逻辑设计于一体,是一种综合性的开发平台。 使用 Quartus II 的设计过程包括以下几步,若任一步出错或未达到设计要求则应修改设计,然后重复以后各步, Quartus II 的设计流程如图 11 所示。 图 11 Quartus II 的设计流程。 逻辑设计的输入方法有原理图形输入、文本输入、波形输入及第三方 EDA 工具生成的设计网表文件输入等。 输入方法不同
基于 FPGA的电子钟的设计 第 14 页 共 56 页 图 38 时间计数模块电路图 该模块逻辑框图如图 39 所示。 仿真波形图如图 310 所示。 图 39 时间计数模块逻辑框图 图 310 时间计数模块仿真波形图 秒计数 子 模块逻辑框图如图 311所示。 图 311 秒计数子模块框图 EN 是时间显示信号,当 Timepiece_En=1 时有效; clk 是秒脉冲输入端口
o u n t 4 [ 3 . . 0 ]A d d 04 39。 h 1 A d d 11 1 39。 h 0 0 1 C o u n t 1 1 ~[ 1 0 . . 0 ]L e s s T h a n 04 39。 h B 12 相应音符频率的两倍值。 此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个 D 触发器以均衡其占空比