ionicons-v5-f

分频器与简易电子琴设计

实验题目:分频器与简易电子琴设计

1. 课程简要信息

课程名称:数字电子技术
课程学时:48(理论) $+ 1 6$ (实践)
项目学时:课内 3 学时,课前大约 4 学时,课后大约 8 学时
适用专业:电子信息类
学生年级:大二第 1 学期

2. 实验内容与任务(限 500 字,可与“实验过程及要求”合并)

项目需要完成的任务(如需要观察的现象,分析某种现象的成因、需要解决的问题等);是否设计有不同层次的任务。

基本任务:

1)设计一个分频器,将 1000Hz 时钟频率分频,产生 10Hz 的时钟信号;
2)设计一个分频器,将 $1 0 0 0 \mathrm { H z }$ 时钟频率分频,产生 76.9231Hz 的时钟信号,要求输出信号占空比为 0.5;
3)掌握基于自动预置计数器的数控分频原理以及基于累加器的数控分频数控分频器设计原理,选择设计方案,设计一个分频器,将 50MHz 时钟频率分频,产生523.25Hz 的时钟信号,频率误差要求小于 0.01Hz;

4)利用数控分频器设计原理,通过 7 个按键产生中音的 DO、RE、M、FA、SO、LA、SI 的 7 个音阶,实现一个简易电子琴的 7 个白键,具体频率如下:

音阶频率表

音阶D0REMFAS0LASI
频率523.25587.33659.26698.46783.99880.00987.77

提高任务:

1)为电子琴增加半音键(黑键),构成完整的 1 组键盘,并增加音符显示模块。

拓展挑战任务(至少选择 1 项):

1)拓展电子琴音阶范围,实现 61 键或 49 键电子琴,拓展键盘可以自行设计制作或采用 PS2 接口的 PC 键盘模拟,或利用 UART 串口由计算机直接控制模拟等。

2)为电子琴增加弹奏记录功能,能自动记录弹奏的音乐并回放。

3)为电子琴增加示范曲演奏功能。

4)借鉴直接数字频率合成器(DDS)原理,将简易电子琴的方波输出修改为正弦波输出。
5)借鉴数控分频器原理,自行查阅其他资料设计一个对输入信号进行 8.7 分频的电路。
6)利用板载 50MHz 晶振,设计一个数控分频器,输出频率范围:0.1Hz-60MHz,要

求频率误差不大于 $0 . 0 1 \mathrm { H z }$ 。

7)其他自行拓展。

3. 实验过程及要求(限 300 字)

如对学生在实验过程中在需求分析、资料查询、自学预习、思考讨论、方法设计、进程规划、软件仿真、平台构建、器件选择、表格设计、现象观察、数据测试、问题分析、总结报告、验收答辩、演讲交流等各方面的要求。

实验分课前、课中和课后三个阶段,其中课前、课中 1 人 1 组独立完成,课后拓展2-3 人 1 组合作完成。

第一阶段:课前预习

  1. 根据实验教程 3.5 节完成相关理论的学习。
  2. 学习超星 MOOC 第 7.1-7.5 节,并利用 Quartus 完成分频器设计范例的设计
    和仿真验证。
  3. 分析设计任务,完成基本设计任务的设计和仿真。
  4. 撰写实验预习报告。

第二阶段:课中实操

1)实验预习情况检查和任务分析与讲解;
2)在实验板上实现基本任务 1-3,并利用示波器或频率计进行测量验证,并记录数据;
3)在实验板上完成基本任务 4,先测量并记录数据,再利用板载扬声器输出,观察现象,并鼓励利用不同的方案实现任务 4;
4)完成提高任务的设计、仿真和测试;
5)检查验收,并进行简单提问答辩。

第三阶段:课后个性化拓展挑战

1)个人实践反思,并撰写实验报告;
2)自主组队,个性化选择拓展挑战任务;
3)两周后,撰写设计总结报告,并通过分组展演答辩方式交流与互评。

4. 相关知识及背景(限 150 字)

项目涉及所需的知识方法、实践技能、应用背景、工程案例。

本实验属于数字电子技术的课程实验。我校《数字电子技术》是首批国家级线下一流课程,课程内容根据行业发展进行了重塑,融入了符合行业需求的EDA设计技术,实验实践全部采用EDA技术开展。

本项目涉及利用 QuartusII、Modelsim 等 EDA 软件进行设计、仿真和时序分析的方法,涉及各种分频器的设计原理和实现方法,能将经典知识、FPGA器件和EDA设计方法有机结合,数字系统设计中具有重要工程应用价值。

5. 实验环境条件

项目实施需要实验资源,包括实验装置功能、实验仪器设备、设计软件工具、主要电子元器件等。

仪器设备:交互式远程 EDA 实验系统、面向 MOOC 的 FPGA 在线实验系统、FPGA 口袋实验板、示波器、频率计

在线资源:超星 MOOC“数字电路与数字系统实验”

软件工具:QuartusII、Modelsim

其他元器件:根据学生拓展挑战内容和方案的不同而不同。可能需要电阻、电容、按键、PC 键盘、USB-UART模块等元件

6. 教学目标与目的(限 150字)

如学习、运用知识、技术、方法等;培养、提升技能、能力、素质等。

  1. 知识目标:能描述、解释各类简易分频器和数控分频的原理和方法;
  2. 能力目标:能根据工程实践需要和各种分频器的原理,运用现代 EDA 工具解决工程实践中的问题;
  3. 素质目标:能应用现代工具和设计方法,根据计数和分频的相关技能开展复杂工程的设计和创新,并展开交流和评价;
  4. 价值目标:感悟交流合作、勇于挑战带来的成就与挫折,培养责任和工程意识,崇尚工匠精神。

7. 教学设计与实施进程

课堂知识讲解、方法引导、背景解释;实验中的方法指导,问题设置、思路引导等。教学模式、实验渠道、研讨主题、观察节点、验收重点、质询问题等方面设计等。实验实施进程的各个环节(如任务安排、预习自学、现场教学、分组研讨、现场操作、结果验收、总结演讲、报告批改等)中教学设计的思路、目的,教师、学生各自需要完成的工作任务,需要关注的重点与细节。

1) 学情与背景

本实验属于数字电子技术的课程同步实验。我校《数字电子技术》是首批国家级线下一流课程,课程内容根据行业发展进行了大幅度重塑,融入了符合行业需求的 EDA 设计技术,实验实践全部采用 EDA 技术开展。

学生前期已经学习了逻辑基础、组合与时序逻辑的分析与设计等相关理论,也完成了基于 FPGA 的逻辑门设计、层次化设计、触发器和寄存器设计、计数译码与显示电路设计、计数器与键盘防抖动设计等前期实验。熟练掌握了基于 EDA 的“自顶向下”的设计方法。分频器是数字系统中的重要部件,在实际工程中具有广泛的应用,本实验旨在帮助学生理解利用计数器实现各类分频,尤其是数控分频的基本概念和设计方法,并能根据复杂工程的实践需要进行方案选择和创新设计。

2) 教学设计思想

本实验项目属于课程同步基础实验,为提高课程“两性一度”,依据“学生中心、产出导向、持续改进”的理念,确实根据学生认知水平和课程目标在专业培养图谱中的定位,科学设计实验任务内容和任务,构建了具有一定梯度的一系列基本任务、提高任务,以及根据自身情况至少选择 1 项实现的拓展挑战任务。既不盲目贪大求全,提升难度,也不随意降低挑战度。最终构成一个较为完整的工程实践项目,需要学生经历学习研究、方案论文中、系统设计、仿真验证、硬件测试、持续改进和总结反思等过程。

由于课内实验学时仅 3 学时,因此教学设计的核心思想之一重在激发学生学习热情,利用超星实验 MOOC 提供自主学习资源和个性化实验指导,利用具有自主知识产权的“交互式远程 EDA 实验系统”和“面向 MOOC 的在线 FPGA 实验系统”以及人手一块的“FPGA口袋实验板”,通过科学的评价机制,鼓励学生课前自主学习,课后积极拓展挑战。

  1. 实验教学模式设计:线上线下混合式教学。

  2. 实验教学资源设计:

超星 MOOC 线上资源:包括任务分析、设计范例讲解、演示等 9 个视频资源,以及实验要求、报告书写要求,报告封面模板、考核评价方法等相关文档,指导学生开展课前课后自主学习实践。


本实验项目配套线上资源

超星实验 MOOC 课程二维码

自主知识产权在线实验平台:

A.自主知识产权的“交互式远程 EDA 实验系统”(2012 年开放,2014 年全国高校自制实验教学仪器设备展评全国二等奖),该系统为 C/S 架构。

B.自主知识产权的“面向 MOOC 的在线 FPGA 实验系统”(2018 年校级优秀自制实验教学仪器),该系统为 B/S 架构。

线下资源:

FPGA 口袋实验板,人手 1 块,2019 年优秀校级自制实验教学仪器,入围 2021 年全国高校自制实验教学仪创新大赛,即将参赛全国现场展评。

自编实验指导教程:《单片机与 FPGA 实训教程》科学出版社 2015.12,本次实验为教材中第 3.5 节实验内容。

自编配套实验指导教程(科学出版社)

5) 教学实施设计:

第一阶段:课前预习与准备

$\bullet$ 根据实验教程 3.5 节完成相关理论的学习。
$\bullet$ 学习超星 MOOC 第 7.1-7.9 节指导文档与实验指导视频,并利用 Quartus 完成分频器设计范例的设计和仿真验证。
$\bullet$ 利用远程实验平台对实验范例进行测试。
$\bullet$ 分析设计任务,完成基本设计任务的设计和仿真。
$\bullet$ 撰写实验预习报告。

第二阶段:课中实操

$\bullet$ 实验预习情况检查;
$\bullet$ 对预习中的问题进行交流互动、讨论分析;
$\bullet$ 在 FPGA 口袋实验板上实现基本任务 1-3,并利用示波器或频率计进行测量验证,并记录数据;
$\bullet$ 在 FGPA 口袋实验板上完成基本任务 4,先测量、记录数据,再利用板载扬声器输出,观察现象,鼓励利用不同的分频方式实现任务 4;
$\bullet$ 在 FPGA 口袋实验板上完成提高任务,可以利用 8 个按键开关和 4 个拨码开关模拟 12 个琴键进行测试。
$\bullet$ 演示验收,并进行简单提问答辩,并评价。

第三阶段:课后挑战拓展

$\bullet$ 个人实践反思,并撰写个人实验报告;
$\bullet$ 自主组队,至少选择 1 个挑战拓展任务开展课后拓展挑战设计,通过评价机制鼓励学生尽可能多的完成拓展任务;2 周后,提交设计总结报告,组织现场答辩和交流和互评,由学生互评和教师评价共同打分。
$\bullet$ 鼓励成熟团队继续深入挑战,自由发挥,开展创新设计,并将课题拓展为期末挑战大作业的项目,可以充当期末挑战大作业,并参与期末大作业答辩和考核。

8. 实验原理及方案

实验的基本原理、设计依据、完成任务的思路方法,可能采用的方法、技术、电路、器件。

一、基本原理与设计依据

1) 2 n 简单分频器

$2 ^ { \mathfrak { n } }$ 分频是最简单的一种分频方式,基本原理是利用二进制计数时,任意相邻两位之间的频率为2倍的关系实现。 $2 ^ { \mathfrak { n } }$ 分频器本质上就是二进制计数器,如图1的4位二进制计数器可以将时钟信号按照 $2 ^ { \mathfrak { n } }$ 权值分频,随着位数的增加频率降低。


图 1 二进制计数实现的 2n 分频示意图

2)任意整数分频

任意整数分频可以利用任意进制计数器来实现,并在计数值的前一半时间内输出一个电平,后一半时间内输出相反的电平既可实现。设计范例1给出了该方案的一个通用范例。首先用一个 always 实现了一个 n 进制的计数器,然后用第二个 always 实现占空比约 0.5 的分频输出。修改 parameter 语句中 n 的数值即可修改分频数,另外计数信号cnt 的位宽 $\mathbf { m }$ 需要根据分频值进行调整。该例仿真波形如图 2 所。该任意整数分频方案简单,可以通过修改第二个 always 语句中对 cnt 计数值的判别标准粗略调整占空比,能满足一般设计要求。但当计数值为奇数时,占空比无法做到精确的0.5。

范例 1:module divn(clkin, clkout);parameter $\mathtt { n } = 7$ ; //分频参数定义,修改 $\mathbf { n }$ 值可控制分频比parameter $\mathbf { m } = 3$ ; $/ / \mathrm { m }$ 分频计数器位宽,需满足 $\mathbf { n } \leq 2 ^ { m }$ input clkin;

output clkout; reg clkout; always $@$ (posedge clkin) begin: reg [m:1] cnt; //需要根据分频比调整计数器容量 begin if (cn $\mathrel { \mathop : } > = { \boldsymbol { \mathrm { n } } } - 1$ ) //控制计数容量为 $\mathbf { n }$ $\mathrm { c n t } = { \mathrm { m } { 1 ^ { } \mathrm { b } 0 } } ;$ ; else ${ \mathrm { c n t } } = { \mathrm { c n t } } + 1 { \mathrm { ` b } } 1 ;$ if (cnt $< \mathtt { n } / 2$ ) //产生占空比约0.5的分频输出 clkout $< = 1 \mathsf { { u } } 1$ ; else clkout $< = 1 \mathrm { { } \mathrm { { b } 0 } }$ ; end end ndmodule


图2任意整数分频器仿真波形( $\scriptstyle 1 = 7$ )

3)占空比为 0.5 的奇数分频

范例 1 实现奇数分频无法做到精确的 0.5,至少相差半个时钟周期,要实现精确的0.5 占空比的奇数分频器就需要对时钟的上升沿和下降沿分别进行计数和判别处理,具体方法有很多种。范例2给出了一种比较容易理解的方法,该方法是利用范例1的分频器对时钟的上升沿和下降沿分别计数,各自产生分频输出信号,这两个信号刚好相位相差半个时钟周期,将这两个输出信号进行或运算既可以得到 0.5 占空比的任意信号,仿真波形如图 3 所示。需要注意的是该例只可用于 0.5 占空比的任意奇数分频,不能用于偶数分频。

范例 2:

module divn05b(clkin, clkaout, clkbout, clkout); parameter $\mathtt { n } = 5$ ; //参数定义,修改 $\mathbf { n }$ 值控制分频比(n 为奇数) parameter $\mathrm { m } = 3 ; / / \mathrm { m }$ 分频计数器位宽,需满足 $\mathbf { n } \leq 2 ^ { m }$ input clkin; output clkaout; output clkbout; output clkout; reg clka; //上升沿计数分频输出信号 reg clkb; //下降沿计数分频输出信号 always $@$ (posedge clkin) //上升沿计数 begin reg [m:1] cnta; begin if (cnta $> = \mathtt { n } - 1 \mathtt { \Gamma } .$ )

$\mathrm { { c n t a } = { m { 1 ^ { } b 0 } } ; }$ else ${ \mathrm { c n t a } } = { \mathrm { c n t a } } + 1 { \mathrm { ' b } } 1 ;$ ; if (cnta $< \mathfrak { n } / 2$ ) //上升沿计数分频输出 clka $< = 1 \mathsf { \ " b l }$ ; else clka $< = 1 \mathrm { { ' b } 0 }$ ; end end always $@$ (negedge clkin) //下降沿计数 begin reg [m:1] cntb; begin if (cntb $> = { \mathfrak { n } } - 1$ ) ${ \mathrm { c n t b } } = { { \mathrm { m } } { 1 { \mathrm { \cdot } } { \mathrm { b 0 } } } } ;$ else ${ \mathrm { c n t b } } = { \mathrm { c n t b } } + 1 ^ { \prime } { \mathrm { b } } 1 ;$ if (cntb $< \mathbf { n } / 2$ ) //下降沿计数分频输出 clkb $< = 1 \mathsf { \ " b l }$ ; else clkb $< = 1 \mathrm { { } \mathrm { { b } 0 } ; }$ end end assign clkout $=$ clka | clkb; //产生占空比 0.5 的最终分频输出 assign clkaout $=$ clka; //输出内部上升沿分频输出信号供调试观察 assign clkbout $=$ clkb; //输出内部下降沿分频输出信号供调试观察 ndmodule


图 3 占空比为 0.5 的任意奇数分频器仿真波形( $\scriptstyle 1 = 5$ )

4)基于自动预置计数器的数控分频

该数控分频以可预置计数器实现任意进制计数器为基础。基于MSI 器件进行任意进制计数器的设计原理几乎在任何一本数字电路书中都会讲述。具体而言可分为预置数法和清零法,也可以分为同步反馈法和异步反馈法。下面以同步预置数法为例。

假设 $\mathbf { n }$ 位可预置计数器最大计数容量为 2n,当计数至最大计数值 $2 ^ { \mathrm { n } } \cdot 1$ 时产生进位输出信号 carry,如果用进位输出信号 carry 控制并行数据 d 的同步预置,就可以跳过 0到 d-1 的 d 个计数状态,使计数器变为 $2 ^ { \mathfrak { n } }$ -d 进制的计数器。改变数据 d 则可以改变计数的循环状态数,预置数 d 越大,跳过的状态越多,计数的有效状态越少,在 $2 ^ { \mathrm { n } } \cdot 1$ 状态输出的进位输出信号carry频率就会越高,对时钟的分频系数2n -d就越小。由于进位输出只在计数的最后一个状态 $2 ^ { \mathrm { n } } - 1$ 时产生,其高电平只持续 1 个周期,因此以 carry 直接输出的脉冲信号占空比将非常低。为了得到占空比为0.5的脉冲信号,经常利用T’触发器将carry信号再进行二分频输出,输出信号的周期为carry周期的两倍。其输出频率

公式可写为:

$$ \begin{array} { r } { f _ { o u t } = \frac { f _ { c l k } } { 2 ( 2 ^ { n } - d ) } } \end{array} $$

范例 3 给出了基于该方法实现数控分频器的 Verilog 代码。进程 pa 利用同步预置数的方法实现了模可控的计数器,并在计数满度时产生进位输出 carry 时钟,第二个 always则将 carry 信号二分频,输出占空比 0.5 的分频信号,总分频系数为2 $: ( 2 ^ { n } - d )$ 。其仿真波形如图 4 所示。

范例 3

module num_ctrl_divn(clkin, d, clkout); parameter $\mathfrak { n } = 8$ ; //修改该参数可改变计数器容量,调整最大分频比。 input clkin; input [n-1:0] d; output clkout; reg carry; reg tbuff; always $@$ (posedge clkin) //实现计数容量可控的计数器 begin: pa reg [n-1:0] cnt; begin if $( \mathrm { c n t } > = 2 \ ^ { * * } \mathrm { n } - 1 )$ --同步预置数 begin $\mathrm { c n t } = \mathrm { d } ;$ carry $< = 1 \mathsf { \ " b l }$ ; end else begin ${ \mathrm { c n t } } = { \mathrm { c n t } } + 1 { \mathrm { \ : } } { \mathrm { b } } 1 ;$ carry $< = 1 \mathrm { { ' b } 0 }$ ; end end end always $@$ (negedge carry) //--T’触发器实现二分频 tbuff $< =$ (~tbuff); assign clkout $=$ tbuff;
endmodule


图4基于可预置计数器的数控分频仿真波形

借鉴该思想,也可以很容易实现同步清零法、异步预置数法和异步清零法的数控分频器实现方案。

5)基于累加器的数控分频。

基于累加器的数控分频与直接数字频率合成器(DDS)数控产生频率的原理一致。其原理如图5所示。累加器将寄存器的值与频率字W相加,每个时钟沿到达时,n位寄存器的值以频率字 W 为步长增加,寄存器的最高位作为分频结果输出。当频率字为 1时,即为加1计数器,相当于要经过 $2 ^ { n }$ 个时钟周期, $f _ { o }$ 才能输出1个周期,即将输入信号 $2 ^ { n }$ 分频。当频率值不为1,而为W时,则等效为一个加W的二进制计数器,经过 $2 ^ { n } { \div }$ W个时钟周期后, $f _ { o }$ 输出1个周期,因此系统的分频比为:

$$ \begin{array} { r } { \frac { f _ { c l k } } { f _ { o } } = \frac { 2 ^ { n } } { \mathsf { W } } } \end{array} $$

其输出频率 $f _ { o }$ 的表达式可写为:

$$ \begin{array} { r } { f _ { o } = W \frac { f _ { c l k } } { 2 ^ { n } } } \end{array} $$

其中??为频率字,即步长, $f _ { c l k }$ 为时钟频率, $\mathbf { n }$ 为寄存器位数, $f _ { o }$ 为输出频率。从该表达式可见,输出频率与频率字成正比关系,频率字越大,分频比越小,输出频率就越高,改变频率字就可以实现数控分频。


图 5 基于累加器的数控分频原理示意图

该数控分频器的频率分辨率,即 $\mathrm { W } { = } 1$ 时能够输出的频率最小值,与寄存器的位数以及时钟频率有关,时钟频率越低,寄存器位数越大,则频率分辨率越高。当时钟频率确定后,则可以根据频率分辨率的要求,确定寄存器的位数,理论上该方法可以获得传统方法无法实现的极高分辨率。比如系统时钟为 ${ 5 0 } \mathrm { M H z }$ 时,要求实现输出频率分辨率优于 $0 . 1 \mathrm { H z }$ 的时钟信号,则累加器的位数可按如下求取:

$$ \frac { 5 0 \times 1 0 ^ { 6 } \mathrm { H z } } { 2 ^ { n } } \le 0 . 1 \mathrm { H z } $$

$$ \therefore n \geq 2 9 $$

已知累加器位数、系统时钟以及需要输出的频率就可以根据(3)式求出产生该输出频率所需的频率字。比如时钟频率 $5 0 \mathrm { M }$ ,累加器 30 位,需产生 ${ 5 2 3 . 3 \mathrm { H z } }$ 频率,则频率字为:

$$ \begin{array} { r } { \mathsf { W } = \frac { 2 ^ { 3 0 } \times 5 2 3 . 3 H z } { 5 0 \times 1 0 ^ { 6 } H z } \approx 1 1 2 3 8 = ( 2 \mathrm { B E } 6 ) _ { \mathrm { H } } } \end{array} $$

另需要注意的是,该方法产生的输出频率不能超过系统时钟频率的一半。

范例 4 给出了该方案实现的数控分频器范例。

范例 4:

module freq_div(clk, freq_w, freq_out);

parameter $\mathfrak { n } = 8$ ; //根据公示(4),修改该类属参数可调整频率分辨率 input clk; //输入时钟,根据公示(3)可知, $f _ { o m a } \ = \frac { f _ { c l k } } { 2 }$ input [n-1:0] freq_w; //频率字
output freq_out; //分频信号输出
reg [n-1:0] freq_word;
reg [n-1:0] acc; //相位累加器
always $@$ (posedge clk) //输入频率字的同步化寄存
begin: pa
freq_word $< =$ freq_w;
end
always $@$ (posedge clk) //相位累加计数

begin: pb acc $< =$ acc $^ +$ freq_word; end assign freq_out $=$ acc[n - 1]; //计数器最高位输出 endmodule


图 6 基于累加器的数控分频 $\mathrm { f _ { c l k } } { = } 2 \mathrm { K H z }$ , $\scriptstyle \mathrm { n = 8 }$ 的仿真波形

6)锁相环(Phase-Locked Loops -PLL)

除了使用 HDL 设计分频器以外,在 QuartusII 中还提供有嵌入式锁相环(ALTPLL)和数控振荡器(Numerically Controlled Oscillators-NCO)等 IP 核可以实现时钟信号的分频,其中 ALTPLL 为免费 IP。

PLL 可以用作零延时缓存器、频率合成器、抖动衰减器、时钟转换等。在 Altera 的FPGA中,有两种类型的锁相环:增强型锁相环(EPLL)和快速锁相环(FPLL)。EPLL可为整个设计提供丰富的时钟资源,它有 6 个内部输出时钟和 4 个(或者 4 对差分信号)专用的片外输出时钟。FPLL 除了用于内部时钟产生外,其主要用于高速源同步差分 I/O接口的设计。Cyclone IV E 系列芯片的PLL 有5路时钟输出,其压控振荡器输出的的频率为:

$$ \begin{array} { r } { f _ { v c o } = f _ { i n } \frac { M } { N } } \end{array} $$

其中 $f _ { v c o }$ 为输出频率, $f _ { i n }$ 为输入时钟频率, $M$ 为时钟倍乘系数, $N$ 为时钟分频系数。
修改M 和N的值既可以调整输出时钟频率,既可以分频,也可以倍频。

PLL 的具体使用和设置方法可以自行查阅相关资料进行学习。

二、硬件平台

1) 自主知识产权“交互式远程 EDA 实验系统”

该系统在2014 年高等教育学会、教育部高等学校实验室建设指导委员会、实验教学指导委员会等 5 部分联合组织的第三届全国高校自制教学仪器设备评选及展示活动中获得全国二等奖。

利用该实验系统,学生可以在任何地方任何时间开展设计,利用平台自带的时钟源和频率计,研究分频器设计。


图 7 自主知识产权“交互式远程 EDA 实验系统”(C/S 模式)(2014 全国二等奖)

2) 自主知识产权“面向 MOOC 的在线 FPGA 实验系统”

该系统 2018 年被评为校级优秀自制实验教学仪器。利用该平台的学习可以利用手机、平板等智能终端随时开展设计。利用平台提供的时钟源和自带的频率计可以研究本实验的分频关系。


图 8 自主知识产权“面向 MOOC 的在线 FPGA 实验系统”(B/S 模式)优秀自制仪器

3) 自主知识产权“FPGA 口袋实验板”

该口袋实验板为 2019 年校级优秀自制教学仪器,入围 2021 年全国高校自制实验教学仪创新大赛,即将参赛全国展评。学生每人 1 块。

该口袋实验板背后丝印有配套的“数字电路与数字系统实验”课程二维码,学生直接扫码即可在课程资源的指导下开展设计。实验课程网站提供有丰富的培养实验实践指导资源,包括 137 个虚拟仿真案例库、71 个实验拓展指导视频(802 分钟)、218 个非视频资源。


图 9 自主知识产权“FPGA 口袋实验板”(2019 优秀自制实验设备)


(2021 年全国高校自制实验教学仪创新大赛入围作品,即将参加现场展演决赛)
图 10 自主知识产权“FPGA 口袋实验板”课程二维码


图 11 自主知识产权“FPGA 口袋实验板”实验课程网站(线上线下混合实验)

三、设计思路与方法

1)实验方案与思路

基本任务 1,将 1000Hz 时钟频率分频,产生 10Hz 的时钟信号,本质为 100 分频电路设计,可参考范例 1 进行设计。

基本任务 2,将 $1 0 0 0 \mathrm { H z }$ 时钟频率分频,产生 76.9231Hz 的时钟信号,要求输出信号占空比为 0.5。该例本质为占空比 0.5 的 13 分频电路设计,可参考范例 2 进行设计。

基本任务 3,将 50MHz 时钟频率分频,产生 523.25Hz 的时钟信号,频率误差要求小于 0.01Hz。该例可参考范例 3 和范例 4 进行设计。

基本任务 4,实现 7 个音阶的基本电子琴,本质是利用数控分频原理,在不同按键下为数控分频器提供不同分频设置值从而产生所需要的频率。其基本框图如图 12所属,其中数控分频模块可以参考范例 3 和范例 4 自由设计,需要注意满足频率误差要求。


图12 7 个音阶的基本电子琴框图

提高任务 1,为电子琴增加半音键(黑键),构成完整的 1 组键盘,并增加音符显示模块。其实现框图可如图 13 所示。在按键时不仅需要给数控分频器分频值,还需要给音符显示模块提供显示音符,并在数码管上显示。


图 12 具有音符指示的电子琴框图

拓展任务 1,拓展电子琴音阶范围,实现 61 键或 49 键电子琴,拓展键盘可以自行设计制作或采用 PS2 接口的 PC 键盘模拟,或利用 UART 串口由计算机直接控制模拟等。该拓展的关键在于键盘扩展,键盘扩展可以利用 FPGA 多 IO 口特点直接扩展,也可以采用扫描键盘方式扩展。如果设计 PS2 接口协议,则可以直接利用 PS2 接口的 PC 键盘,如果设计 UART 接口协议,则可以由计算机串口软件,发送音符进行模拟控制,具体可以采用如下框图设计。


图13电子琴按键扩展框图

拓展任务 2,为电子琴增加弹奏记录功能,能自动记录弹奏的音乐并回放。该拓展任务关键在于记录按键键值和按键时间,并存储在 RAM 中,实现弹奏记录功能。再通过模式控制模块读取键值和时间实现乐曲复现。参考框图如下。


图14电子琴演奏录制和回放框图

拓展任务 3,为电子琴增加示范曲演奏功能。该例本质是实现简单音乐盒功能,在拓展任务 2 的基础上可以很容易扩展得到,将乐谱存储在 ROM 表中,由音符产生模块读取乐谱,再通过音符 ROM 表变换为分频器设置值,由模式控制模块送给数控分频器产生需要的分频值。


图15电子琴示范曲演奏功能框图

拓展任务 4,借鉴直接数字频率合成器(DDS)原理,将简易电子琴的方波输出修改为正弦波输出。该拓展需要数控分频器采用相位累加方式的数控分频,且不再从相位累加器的最高位输出方波。需要将累加器地址控制正弦 ROM 表产生正弦波数据,经由 DA转换器转换为正弦波,并滤波输出,得到更加柔和的单音频信号,框图如图 16 所示。


图 16 正弦波简易电子琴

拓展任务 5,设计一个对输入信号进行 8.7 分频的电路。小数分频的实现思路有两个,当输入频率达到 FPGA 内部锁相环可以工作的最低频率的情况下,可以使用 FPGA 内部 PLL 来实现。当输入频率太低,PLL 无法工作,则可以使用 Verilog 语言实现小数分频。对于 8.7 分频,因为没办法用计数器表示 0.7 这种数字,所以就用一个等效的概念来进行 8.7 分频,原时钟 87 个周期的总时间等于分频后的时钟 10 个周期的总时间。先做 3 次 8 分频得到时钟周期数是 24,再做 7 次 9(8 加 1)分频得到时钟周期数 63,总共就 87 个时钟周期;在这 87 个时钟周期里面分频时钟跳变 20 次总共 10 个周期。小数分频器的原理如图 17 所示。


图17 8.7分频器原理示意

用整数部分 zn( $_ { , = 8 }$ )作为一个分频系数,zn 加 1( $_ { , = 9 }$ )作为另外一个分频系数组成一个小数分频器。根据上面的原理可以列出下面的二元一次方程组:

$$ \mathrm { z n } { * } \mathrm { N } { + } \left( \mathrm { z n } { + } 1 \right) { * } \mathrm { M } { = } 8 7 $$

$$ \mathrm { N + M = 1 0 } $$

可以解出 N 和 $\mathbb { M }$ 的值分别是 3 和 7。

如果分频系数 6.432,那么有下面的二元一次方程组,zn 是6

$$ \mathrm { z n } * \mathrm { N } + \left( \mathrm { z n } + 1 \right) * \mathrm { M } = 6 4 3 2 \ \cdots \ \left( 1 0 \right) $$

$$ \mathtt { N + M = 1 0 0 0 } \ \cdots \ ( \ 1 $$

解出 N 和 $\mathbb { M }$ 的值分别是 568 和 432,这个值就很大了,计数器的位宽也变大了,也就是说小数部分位数越多,需要的计数器的位宽越大,消耗的硬件资源越多。不过568,432,1000 这几个数有公约数,可以除以最大公约数,把计数数值减小。

如图 18 所示:一个小数分频器就有两部分组成:ZN 和 $\mathrm { Z N } { + } 1$ 为分频系数的多路分频器,还有一个 ACC 计数器。分频器在输入信号 enout $\scriptstyle { \frac { } { } } = 0$ 的时候是 ZN 分频;分频器在输入信号 enout $= 1$ 的时候是 $\mathrm { Z N } { + } 1$ 分频;


图 18 小数分频

ACC 计数器的作用对 ZN 分频和 $\mathrm { Z N } { + } 1$ 分频的次数计数,对于一位小数计数总次数为10(两位小数为 100...),输出信号 enout 决定下次是 ZN 分频还是 $\mathrm { Z N } { + } 1$ 分频。

拓展任务 6,利用 $5 0 \mathrm { M H z }$ 晶振实现,设计一个数控分频器,输出频率范围: $0 . 1 \mathrm { H z ^ { - } }$

60MHz,要求频率误差不大于 0.01Hz。给任务需要使用锁相环将 $5 0 \mathrm { M H z }$ 时钟变换为至少
120MHz 以上,然后再按照数控分频的方法实现,此处不再赘述。

9. 实验报告要求

需要学生在实验报告中反映的工作(如:实验需求分析、实现方案论证、理论推导计算、设计仿真分析、电路参数选择、实验过程设计、数据测量记录、数据处理分析、实验结果总结等等),如:

本实验报告为电子版报告,应包括以下内容:

1)各类分频器原理分析
2)实现方案论证
3) 理论推导计算
4) 系统设计流程
5) 各模块设计说明与仿真测试方案
6) 设计源码和仿真结果图及其仿真结果分析
7) 实验结果的照片,及其分析说明
8) (选做)实验拓展,含方案说明、设计源码、实验结果及分析,团队分工及个人
贡献等。
9)实验总结与反思
注:实验报告封面模板可以在超星 MOOC 第 7.1 节中下载。

10.考核要求与方法(限 300 字)

考核的节点、时间、标准及考核方法。

本次实验考核含 4 个环节,课前预习、课中实践、课后挑战拓展和实验报告 4 部分。

课前实验预习的考核评价在课中实验时首先完成。

课中实践考核在课中实践过程中完成。

课后挑战在实验完成后的 2-3 周内进行现场答辩方式考核完成。

实验报告提交后进行考核评价,每个实验都有对应的实验报告模板,可以在超星 MOOC 中下载,报告封面中有每个实验报告针对性的成绩评定标准。

说明:为了鼓励学生个性化、差异化学习,鼓励学生自我挑战,对于挑战性拓展设计采用加分项方式考核,通过加分项弥补其他环节的失误丢分。拓展实验也可以延申为期末挑战大作业的课题,参与期末挑战大作业的成绩测评。期末挑战大作业在期末成绩中占 $5 %$ 。

实验环节指标点观察项权重值支撑课程目标
课前实验预习超星 MOOC 实验视频自学学习通后台自动记录学习进度和测试数据10分课程目标1
实验范例预习4个范例实验代码仿真波形20分(4*5)
课中实验过程基本任务1工程代码设计正确5分课程目标2
基本任务2仿真方案设计合理案设计仿真方案设计合理
基本任务3仿真结果正确10分
基本任务4实物测试设计合理15分
提高任务1现场问答回答准确完成时间和效率15分课程目标3
课后实验拓展自选任务设计方案合理仿真结果正确附加分最高50分课程目标3、4
实物测试效果好现场答辩流畅分工合作、精益求精(学生互评+教师测评)
实验报告实验预习实验任务、方案与设计思路和步骤实验结果与数据处理实验体会与反思讨论实验拓展有实验预习代码(20分),有预习仿真波形及分析(10分)。实验内容完整(10分),步骤正确(10分),设计过程描述清楚详细(15分)。有设计的软件仿真和实验结果的照片且清晰合理(10分),对设计结果的分析客观科学(20分)。对设计制作过程中的问题、结论等进行分析总结,设计中的经验教训、收获等总结。完成拓展(15分)。20分(折合)课程目标1、4

11.项目特色或创新(可空缺,限 150 字)

项目的特色在于:项目背景的工程性,知识应用的综合性,实现方法的多样性。

特色:

  1. 精确定位。根据本实验目标和在专业培养图谱中的定位,不贪大求全,盲目提高实验难度,也不随意降低实验挑战度,而是根据学生认知水平,以学生发展为中心,合理设置实验阶梯,合理构建实验挑战度,为学生“搭梯子,送金子”。
  2. 内容经典、方法先进,符合行业工程实际,注重学生工程思维培养。使用 HDL 语言与 EDA 工具,可采用自上而下或自下而上的设计方法,实验内容具有重要的工程价值,紧密结合工程实际,引导学生逐步解决复杂工程问题,培养学生工程思维。

创新:

  1. 线上线下混合式实验教学。利用自主知识产权在线实验平台和 FPGA 口袋实验板,配合自建超星 MOOC 实验课程和自编实验教程,突破时空限制,推进实验实践的线上线下混合式实验教学。

获奖信息

获奖等级 一等奖
年份 2021

作品信息

学时分类 1-6学时

作者信息

作者
廖磊
学校
四川师范大学

电工电子实验教学资源平台 苏ICP备09069895号-19