ionicons-v5-f

“九连环”求解器Verilog HDL数字设计实验

实验题目:“九连环”求解器 Verilog HDL 数字设计实验

1. 课程简要信息

课程名称:数字电路与系统
课程学时:48(理论) $+ 1 6$ (课程实验)
项目学时:2(课内,布置 1 课时、讲评 1 课时) $^ +$ 平均 10(课外)
适用专业:电子信息工程
学生年级:大学本科三年级、秋季学期(大三第 1 学期)

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

1)第一层次的基本任务:教师给出模拟“九连环”玩具的Verilog HDL模块(以下简称“电子连环”模块),环的状态用“0”、“1”表示,且模拟了机械结构对每个环的限制,要求通读代码、编写测试程序进行功能仿真,观察选择了不同的环后,该环是否能够不受限制地改变状态;

2)第一层次的基本任务:用便携式FPGA 开发板上LED 数码段的亮灭代表环的状态,用一个按键循环选择不同的环,用另一个按键发出翻转操作信号,实现电子“九连环”的手动求解,需要实例化数码管动态显示和按键去抖模块;

3)第一层次的扩展任务:学习“电子连环”模块对于环的数目的参数化编程,比较参数化编程的掩码方法和生成块方法,体会后者优点;

4)第二层次的基本任务:提示存在着“自由环”和“使能环”,理解从9’b1_1111_1111状态自动求解的过程并加以初步体验;

5) 第二层次的扩展任务:根据“九连环”与格雷码(Gray code,又被称作“格雷循环码”)的关系,教师给出格雷码单位距离特性的证明,要求结合该证明掌握格雷码序列递减操作的原理,并进一步要求使用一个开关切换手动和自动求解模式,解决从任意状态自动求解“电子连环”的问题。

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

1)资料学习:阅读实验指导书明确设计要求,读懂“电子连环”模块代码;
2) 编程与仿真:编写测试程序对“电子连环”模块进行功能仿真,并添加循环选择和翻转操作功能;
3) EDA 实现:在顶层文件中将各功能模块实例化,并配合数码管动态显示、按键去抖等模块实例,配置FPGA 引脚,在便携式实验板上实现手动求解设计;
4) 分组讨论:通过“九连环”玩法了解“自由环”和“使能环”,学有余力的学生将研讨生成块编程、格雷码序列递减操作原理;
5) 设计开发:实现“电子连环”从 9’b1_1111_1111 状态自动求解,学有余力的学生实现从任意状态自动求解;
6)总结报告:提交实验报告和代码,以及设计截屏录像等。

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

“九连环”的求解与格雷码有关,格雷码是数字电路课程的知识点。采用硬件描述语言编

程实现“九连环”求解,将该知识点与数字电路 EDA 实践技能相联系。FIFO 队列指针的编码为格雷码,以往指针的增减需借助它与自然二进制码的转换[1],本实验发展了新的格雷码序列增减方法,丰富了格雷码的性质,且具有工程应用潜力。

5. 实验环境条件

实验的硬件资源包括便携式实验板、USB 电缆和个人计算机。便携式实验板由本单位实验中心设计开发,核心为 50 万门规模的 FPGA 芯片,以及 4MB 的非易失 Flash 存储器,并集成有编程器,用USB电缆直接连接计算机就能实现JTAG编程和调试。实验板外形尺寸参照arduino(不超过 $8 \mathrm { c m } \times 6 \mathrm { c m } \times 2 \mathrm { c m } )$ ),便于携带。如图 1,该实验板还包含 2个数码管、4个LED 灯、3个按键(其中1个为复位)、2个开关、22个扩展引脚、arduino堆叠插槽(反面)、1路A/D 采样端口,以及一个 USB 仿真的 UART 串口。

本实验主要用到的外设为2个数码管、2个按键和1个开关。

设计软件工具包含Verilog HDL功能仿真工具软件ModelSim,以及核心FPGA芯片所对应的集成综合环境(ISE)软件;其中,后者可调用下载工具,实现网表(*.bit)的下载或非易失的镜像文件(*.mcs)的烧写,而且也集成了仿真工具(但易用性略低于ModelSim),因此单纯使用ISE 也可完成实验。


图 1 便携式实验板的外观

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

具体实验目的:

1)实训数字电路EDA设计、仿真和下载流程,具备熟练使用实验板的技能;
2) 掌握 Verilog HDL 模块语法结构和实例化方法,着重培养组合逻辑编程实现能力;
深层次的教学目标:
1)潜移默化良好的编程习惯,培养仿真测试和调试技巧;
2)灵活运用数字逻辑知识进行设计,并加以巩固和发挥。

7. 教学设计与实施进程

本实验是《数字电路与系统》课程实验的一部分,课程实验以可编程硬件为核心的便携式板为主要实验器材,起到既巩固数字电路专业功底,又能实践当代数字电路EDA开发技术的目的。每学期安排三次课程实验,前两次分别针对数字逻辑和有限状态机,第三次为综合实验,本实验为第一次实验。该实验虽然不是“零起点”,但不仅承担着使学生熟悉实验器材、掌握FPGA开发流程、培养后续实验的先备技能的入门作用,而且具有将当时所传授的逻辑代数和组合逻辑课本知识与硬件实现融会贯通的职能,更是激发学生的学习志趣,熏陶专业素养的关键环节。

在教学设计中,注重课堂教学内容与实验内容相呼应,配合课下分组辅导与答疑,在实施过程中在如下几个方面加强对学生的引导:

1) 知识讲解:在数字电路的码制的教学中,学习并掌握格雷码及其性质,包括单位距离特性、循环相邻特性和镜像反射特性;
2) 知识讲解:在数字电路的逻辑代数的教学中,学习异或逻辑运算;
3) 知识讲解:在硬件描述语言的教学中,学习并掌握Verilog HDL语言的语法结构,初步学会采用连续赋值assign语句和带有电平敏感表的always过程块实现组合逻辑的方法,并通过功能仿真作业进行强化;
4) 教学模式、实验渠道和分组研讨:提前发放便携式实验板,人手一块,结合EDA工具的教学,对于“零起点”的学生,以作业的形式根据例程实践基本的开发流程,对于以前在课外有FPGA开发经验的学生,则注意培训代码编写和开发流程的规范性,引导学生们组合成开发小组,每组3~4人,鼓励具有开发经验的学生为组长;
5) 问题设置和任务安排:发放本实验的指导书(电子版),用1个课时布置实验任务,演示“九连环”玩具,使学生对开发它的求解器有感性的认识,并提示实验设计与格雷码的关系,明确分层次的基本、扩展要求,但亦不宜交代过细,旨在培养学生通过阅读技术文档掌握和理解信息的能力;
6) 问题设置和任务安排:对于实验进行分层次要求,实验指导循序渐进,不脱离该实验的“入门”属性,并且前面留有“线索”,进行发现式教学,例如:细心研读“电子连环”模块代码可以发现确定“使能环”的逻辑、手动求解的仿真和演示可以发现交替翻转“使能环”和“自由环”的自动求解规律;
7) 问题设置和任务安排:在分层次要求的基础上,分为基本要求与扩展要求,其中通过给出格雷码单位距离特性的证明,启发学生自主发现任意状态下的自动求解方法;
8) 实验渠道和方法指导:学生利用便携式实验板在课下进行实验,不占课时,发扬便携式实验不阻塞课堂教学的优点,在随后的课堂教学中强调格雷码与自然二进制码转换、数据选择器等内容,丰富学生开发时的背景知识;
9) 线上、线下辅导与学生自学相结合:在实验的过程中学生难免产生畏难情绪,教师通过加强分组辅导和答疑从技巧上进行引导、从心理上进行鼓励,建立两个QQ群,一个由教师主导进行线上答疑和线下答疑预约,另一个由课代表主导教师不参与,供学生自由交流学习和开发经验,实验器材的便携特性使得答疑可以在会议室、教研室甚至走廊进行,教师还提供“九连环”玩具实物供学生们体验;
10) 报告批改和结果展示:提供实验报告模板,各小组必须按时提交实验报告(电子版和打印版),由教师和一名教辅背对背地给出评分,评分采用80/20原则,基本要求分值占 $80 %$ ,扩展要求和综合发挥占 $20 %$ ,学生将实验结果截图展示,或上传录像,教师在实验结束后的讲评中进行总结,并可邀请具有典型性的小组展示实验成果。

在实验教学设计中,除了在Verilog HDL语言和EDA工具的教学中培养学生的先备技能之外,教师还要提前完成实验的设计、编写实验指导书、完成分层次(手动求解和自动求解)的参考设计,以及实验布置的讲稿。对于扩展要求,教师提示学生注意生成块代码,并自主给出格雷码单位距离特性的证明,启发学生该证明与“九连环”求解的关系。

要求学生阅读并理解实验指导书和“电子连环”模块代码,借助软件手册使用EDA软件完成编程、功能仿真、实验板下载,最终实现基本的手动求解器,随后根据实验指导书的提示进行自动求解器的开发和实现,最后总结并撰写实验报告,按时上交。

实验实施过程中,鼓励开发小组中的组长合理安排组内讨论,分配任务,自我管理。

实验实施过程中,教师和助教进行线上和线下答疑,及时了解学生的开发进度,并利用课堂教学补充格雷码的背景知识;实验完成后同助教一起批改实验报告,审视实验结果,进行总结和讲评。

本实验对于学生专业素质培养的重点为:

1) 完全掌握Verilog HDL的模块语法结构,以及模块的实例化方法,领会基于模块的编程设计思想;
2)3) 掌握通过连续赋值assign和带有电平敏感表的always过程块实现组合逻辑的编程方法;熟练掌握数字电路EDA编程、综合、仿真测试、硬件下载和调试的流程,初步掌握仿真测试和调试的技巧;
4) 巩固并扩展课堂中所学的有关格雷码及其序列的性质。

在实验实施中,需要关注的细节在于:

1) 充分利实验指导书中提供的代码,以及实验过程中线上线下的督促,促进学生养成良好的编程习惯(如缩进、变量命名等);
2) 对于便携式实验板上的数码管动态显示、按键去抖等的原理与实现,争取在“零起点”培训的时候就先期弄懂,本实验中均提供成熟的模块供实例化,使学生集中精力解决关键的数字逻辑设计问题,并养成有意识地封装功能模块积累“元件库”的好习惯;
3) 对于设计中会用到的时序逻辑编程,如循环移位选择功能、去抖后按键脉冲的触发功能,打破学生自初高中以来养成的按照教材顺序循规蹈矩学习的惯性,鼓励他们使用所学的Verilog HDL知识自主解决,并及时答疑辅助。

综上所述,本实验的教学设计发扬了发现式教学和实践教学的优势,实验实施中教师“精耕细作”合理加以引导,不仅是一个较为全面地培养基础能力的实验,而且实验的选题和分层次递进的要求具有趣味性和挑战性。

8. 实验原理及方案

1) 基本原理与设计依据— “九连环”玩具与格雷码的关系

传统玩具“九连环”(如图 2)是按格雷码变化的,如果环在“钗”上为“1”,“板”上为“0”,所谓将环从“钗”上全部取下的操作相当于将全为“1”的9-bit格雷码比特矢量“倒退”回9’b0_0000_0000。且这种格雷码序列的逆序变化只有一个方向可行(即:试图“正向”循环到达9’b1_0000_0000,然后由9’b1_0000_0000返回9’b0_0000_0000是行不通的)。


图 2 “九连环”玩具

如果根据环的状态,在“钗”上为“1”,“板”上为“0”,某个状态下“九连环”对应的编码为“ $g _ { n - 1 } g _ { n - 2 } \cdots g _ { i } \cdots g _ { 1 } g _ { 0 }$ ”;其中设 $g _ { 0 }$ 为离手柄最远的环。则“九连环”的机械结构限制的规律为:

 只通过一步操作, $g _ { 0 }$ 永远可以自由地套在“钗”上(注:只有是从“钗”的夹缝中穿过再套在“钗”上才算真正“在‘钗’上”,从外侧套入不算),或者从“钗”上取下,可以称

之为“自由环 ...”;(例如图 3 中的左图)

 如果设 $i > 0$ ,对于某个环 $g _ { i }$ ,如果紧挨着它的低位环是“在‘钗’上”的,即: $g _ { i - 1 } = 1$ ;而且要么 $g _ { i - 1 }$ 已经是 $g _ { 0 }$ ,要么从 $g _ { i - 2 }$ 到 $g _ { 0 }$ 全为 0;此时 $g _ { i }$ 可以只通过一步操作套在“钗”上或者从“钗”上取下;可以称之为“使能环 ...”;(例如图 3 的左图中的编码状态为9’b1_1111_1110,右图中的编码状态为 9’b1_1111_1010,“使能环”为 $g _ { 2 }$ )

 对于“九连环”的所有状态,“自由环”都存在;

 对于“九连环”的大部分状态,存在“使能环”,除了{0 0}  (即:全零)和{10 0}  ,这两种例外情况对应格雷码序列的第一个编码符号和最后一个编码符号。


图 3 “自由环”和“使能环”的例子

作为入门实验,为了降低难度,教师给出了模拟“九连环”的Verilog HDL模块interlocks,以比特矢量 reg [ NUM-1 : 0 ] gray 代表每个环的状态。其中,确定在当前状态下“使能环”和“自由环”的位置,以比特矢量 wire $\left[ { \mathrm { N U M } } \colon 1 : 0 \right]$ enable_or_free 表示,其生成块代码如图 4,由于“自由环”总是在最低位,需要确定的主要是“使能环”的位置。

由于生成块是Verilog-2001标准定义的语法,模块中还有意给出当环的个数参数化后,利用掩码的方法确定“使能环”位置并以比特矢量 reg [ NUM-1 : 0 ] bool_en 表示的代码。这段代码虽然是冗余的,供学有余力的学生认识到如何在仅有Verilog-1995标准编译器的条件下克服困难,并体会利用Verilog-2001标准生成块方法编程逻辑简洁的优点。


图 4 确定“使能环”和“自由环”位置的 Verilog HDL 代码

“电子连环”模块interlocks的原理图如图 5,它很好地模拟了“九连环”玩具的机械互锁的限制,并且还封装了优先权判决,使得外部“游戏者”同时选择多个环的时候,只令较低位的选择有效,起到了容错的作用。


图 5 “电子连环”模块的原理图(省略复位和置数功能)

2) 第一层次的实现方案— 手动求解器

2-1)电子“九连环”显示设计的建议

以便携式实验板上的两个数码管中的9个数码管LED 段表示环的位置,点亮表示在“钗”上,熄灭表示在“钗”下。建议以 9个LED段围成一个阿拉伯数字“9”的形状,其中尾端为最低位,如图 6所示。


用两个数码管形成了一个“胖9”的形状,共9段
图 6 用数码管的 LED 段表示“九连环”(建议的方法供参考)

2-2)环的选择操作及其反显的设计要求

采用一个按键触发循环移位寄存器对环进行选择,简称为“选择按键”,每按键一次,选择信号(即:输入到 interlocks 模块实例的 [NUM-1:1] select)比特矢量向高位移动一位;直到从最高位移位之后,循环回到最低位。

被选中的环所对应的数码管 LED 段进行闪动,由于闪动的时候无法判别这个段所对应的环的状态是“0”还是“1”,因此此时用左边(高位)数码管的小数点表示,即:小数点点亮即为在“钗”上,否则相反,如图 7。

2-3)环的翻转操作及其反馈显示的设计要求

采用另一个按键作为触发当前环翻转的脉冲源,简称为“翻转按键”。如果“电子连环”的逻辑限制允许(注:interlocks 模块内定义的信号[NUM-1:1] enable_or_free ,对应真实世界的机械结构限制,对外输出 forbidden 信号),则可以改变当前环的“0”、“1”状态,并通过上面第 2-2)条反显;否则,当前“环”的逻辑值不变,且在按下翻转按键的时候,用右边(低位)数码管的小数点显示forbidden的逻辑值——如果当前“环”可以翻转,则该小数点不点亮,否则在按下翻转按键的时候,该小数点被点亮。图 7给出了便携式实验板典型操作人机接口的示意图。


图 7 典型操作人机接口的示意图


图 8 手动求解“电子连环”的原理图

2-4)手动求解器的参考设计方案

实验指导书提示采用循环移位寄存器在“选择按键”的触发下生成选择信号,并输入到“电子

连环”模块实例的 select 输入端,而将“翻转按键”信号作为“电子连环”模块实例的 toggle 输入。

注意:循环移位寄存器用边沿触发的 always 过程块实现,并且必须在复位的时候置入9’b0_0000_0001。

遵循上述设计提示,学生基本可以实现“电子连环”操作的逻辑部分,但还必须协调实现显示和按键外设,设计方案的原理如图 8,该原理图并不提供给学生,让他们充分尝试并自主解决。

图 9 展示了手动求解取下“电子连环”最低位的三个环的过程,以及对受限制的环操作时反馈显示“forbidden”信号的情况。


图 9 手动求解“电子连环”的实例

2-5)实现中的难点及解决思路

设计要求被选的环对应的LED 数码段闪动显示,实验实施过程中发现有一部分开发组在解决这个问题的时候数字逻辑编写得非常复杂。答疑中强调了“分而治之”的思路,将显示的功能与核心的逻辑功能分开,先使输出的比特矢量能够正确地反映环的状态,然后再根据当前的选择,使被选的比特交替地异或 0 和异或 1,产生闪动的效果。进一步引申出重视系统设计,先画框图再逐步加以解决的工程习惯。

答疑中重申了 Verilog HDL 模块封装和实例化的思想。例如,为了节省 FPGA 的管脚数码管采用动态扫描,通过实例化动态显示模块,对于显示译码的输出屏蔽了这种特殊实现的影响。

3)基本原理与思路方法——单位距离特性的证明对格雷码序列递减的启发

3-1)格雷码与自然二进制码的关系(背景知识)

设n比特格雷码和自然二进制码被分别记为为“ $g _ { n - 1 } g _ { n - 2 } \cdots g _ { 0 }$ ”和 $^ { * } b _ { n - 1 } b _ { n - 2 } \cdots b _ { 0 }$ ”,格雷码到

自然二进制码的转换关系为:

$$ b _ { i } = \bigoplus _ { j = i } ^ { n - 1 } g _ { j } , i = 0 , \ldots , n - 1 $$

自然二进制码到格雷码的转换关系为:

$$ \left{ \begin{array} { l c } { { g _ { n - 1 } = b _ { n - 1 } } } & { { i = n - 1 } } \ { { g _ { i } = b _ { i + 1 } \oplus b _ { i } } } & { { i = 0 , . . . , n - 2 } } \end{array} \right. $$

传统的格雷码序列的递减操作需要根据式(1)转换为自然二进制码,然后对自然二进制码减1操作,最后再根据式(2)转换回格雷码,而递增操作也与之同理,例如:文献[1]第392页表明格雷码编码被用于异步FIFO缓冲区的指针,其原理与图 10同理。


图 10 基于两次码制转换的格雷码序列递减操作原理

与图 10 的原理不同,本实验采用模仿“九连环”机械结构的方式实现格雷码序列的递减(同理亦可进行递增操作),虽然在揭示其原理的证明中用到了格雷码与自然二进制码的转换关系,但在操作中并不需要两次变换和加减操作,且可以作为格雷码的一种新的性质和应用。

3-2)格雷码单位距离特性的证明(思路启发)

格雷码的单位距离特性的证明揭示了模仿“九连环”机械结构的方式进行格雷码序列递减的原理。在实验指导书中,给出了相应的证明,但并不直接总结出自动求解“电子连环”的方法,将得到解答的“临门一脚”的机会留给学生,有助于将基本原理联系实际问题的思维方法的训练。

性质(单位距离特性)格雷码相邻的码字之间只有1位比特不同。

证明:

设两个相邻的 $n$ -bit 格雷码符号分别为 $G _ { k }$ 和 $G _ { k + 1 }$ (注:如果 $k { = } 2 ^ { n } { - } 1$ ,则后者为 $G _ { 0 }$ ),则它们所对应的自然二进制码 $B _ { k }$ 和 $B _ { k + 1 }$ 的数值只相差 1,即 $B _ { k }$ 比 $B _ { k + 1 }$ 递减 1。以下分情况讨论:

情况 1——如果 $B _ { k + 1 }$ 为奇数,则它们只有最低位不同;

情况 2——如果 $k < 2 ^ { n } - 1$ ,且 $B _ { k + 1 }$ 为偶数,即可表示为 $^ { 6 6 } \mathrm { \bf ~ X } \ldots \mathrm { \bf ~ X } 1 0 \ldots 0 ^ { 3 }$ ”形式,即它的第i 1位到第 0 位为 0,第 $i$ 位为 1;由 $B _ { k } = B _ { k + 1 } - 1$ ,则 $B _ { k }$ 的第i 1位到第 0 位为 1,第 $i$ 位为 0;且此时 $B _ { k }$ 和 $B _ { k + 1 }$ 从第 $n - 1$ 位到第 $i + 1$ 位相同;

情况 3——如果 $k { = } 2 ^ { n } - 1$ , $B _ { k }$ 为全 1, $B _ { k + 1 }$ 为全 0,即: $B _ { k + 1 }$ 回卷后相当于 $B _ { 0 }$ 。
根据式(2)将 $B _ { k + 1 }$ 和 $B _ { k }$ 分别转换为 $G _ { k + 1 }$ 和 $G _ { k }$ ,则在上述三种情况下,分别存在:情况1— $G _ { k + 1 }$ 和 $G _ { k }$ 只有最低位不同,其他位相同;
情况2—— $G _ { k + 1 }$ 和 $G _ { k }$ 只有第i位不同,其他位相同;
情况3—— $k { = } 2 ^ { n } - 1$ , $G _ { k }$ 为“10...0”, $G _ { 0 }$ 为全0,它们循环相邻,只有最高位不同。
综合上述三种情况,得证。

格雷码单位距离特性的证明对于解开“ $n$ 连环”的启示为:情况1对应着操纵“自由环”,情况2对应着操纵“使能环”,而情况3对应着两种不存在“使能环”的编码状态,其中 $G _ { 0 }$ 意味着“钗”和

“板”完全分离。

3-3)自动求解“电子连环”的方法(自主发现)

根据实验指导书的提示,通过研讨单位距离特性的证明自主探索。不难发现,由式(1),如果 $B _ { k + 1 }$ 为奇数,即 $b _ { 0 } { = } 1$ ,则 $G _ { k + 1 }$ 一定含有奇数个“1”,对应情况1;反之则对应情况2;情况3中的 $G _ { 0 }$ 则可以作为停止求解的条件。换言之,存在:

$\textcircled{1}$ 如果当前“钗”上套有偶数个环,则翻转“使能环”;

$\textcircled{2}$ 否则,翻转“自由环”,直至从“钗”上取下所有的环。

4) 第二层次的实现方案——自动求解器

4-1)从全“1”状态自动求解

即使不经过上述背景知识下的思路启发和自主发现过程,完成了基本要求的手动求解器,学生们亦可容易地获知通过交替翻转“自由环”和“使能环”就可以从 9’b1_1111_1111 逐步解开到9’b0_0000_0000,要求理解从 9’b1_1111_1111 状态自动求解的过程并加以初步验证,验证的方法也充分考虑到学生们的不同能力水平,可以是步骤手动展示、仿真或设计实现,教师针对设想的可行性和设计的合理性对知识的基本掌握情况进行评判,完成程度仅作为参考。

通过评阅实验报告和效果检查发现,部分实验组单纯从翻转“自由环” $g _ { 0 }$ 开始,交替翻转两种类型的不受限制的环,仍能够较为完备地完成自动求解任务;而多数实验组则将格雷码单位距离特性原理与实际问题联系起来,实现了从任意状态的自动求解。

4-2)从任意状态自动求解

当环的状态为任意,自动求解设计的原理图如图 11;其中,“使能环”位置的确定如本节“1)基本原理与设计依据”所述,若以比特矢量 $E = { e _ { n - 1 } e _ { n - 2 } \ldots e _ { 1 } e _ { 0 } }$ 表示,则对于当前的格雷码$G = { g _ { n - 1 } g _ { n - 2 } \ldots g _ { 1 } g _ { 0 } }$ ,其逻辑表达式如式(3),式中“ ”表示连续的逻辑“与”运算,“ ”表示逻辑求反运算。

并且,作为“电子连环”的求解器,该设计的电路实现具有自动停机的功能,当格雷码为全零,模2加结果为0选择“使能环”比特矢量,此时已不存在“使能环”,可保持全零状态。

$$ e _ { i } = \left{ \begin{array} { c c } { 0 } & { i = 0 } \ { g _ { 0 } } & { i = 1 } \ { g _ { i - 1 } \cdot \prod _ { j = 0 } ^ { i - 2 } \overline { { g _ { j } } } } & { i \geq 2 } \end{array} \right. $$


图 11 基于机械模拟的格雷码序列递减操作原理

4-3)手动求解器与自动求解器的切换与集成

实验指导书并没有强制要求将手动求解器与自动求解器集成起来,但建议对于完美的设计,通过一个开关切换两种求解器。建议学生考虑这种工程需求,细心地绘制并观察手动求解器的原理框图(如图 8),通过分析发现,可以保留虚线框之内的设计不变,而手动和自动控制的区别在于: $\textcircled{1}$ 选择信号 sel 和翻转信号 toggle 的来源不同; $\textcircled{2}$ 自动求解器需要当前的格雷码 gray 数据作为逻辑运算的输入。集成后的原理框图如图 12。


图 12 集成的手动求解与自动求解“电子连环”的原理图

4-4)实现中的难点及解决思路

通过从格雷码单位距离特性的证明的研讨发现自动求解“电子连环”的规律是一次飞跃,好在通过分层次的实验要求已经作了必要的技术铺垫,而且有很多可供利用的线索——如:确定“使能环”的逻辑式(3)与教师给出图 4 中 enable_or_free 的组合逻辑非常类似,这时实验小组最好利用团队的力量,群策群力加以发现并解决。

对于手动求解和自动求解的集成,仍然强调“分而治之”的系统设计思想,建议结合系统框图理清控制信号脉络,再加以合理的增量化改造最终实现,训练了学生工程设计的良好习惯与素养。

9. 实验报告要求

实验报告需要反映以下工作:

1)实验背景与需求分析

2) 系统设计,包含:

 总体设计思路

 接口设计

 针对关键的模块分小节论述其设计

3)功能仿真测试,包含:

 测试程序设计

 功能仿真过程

 实验关键结果及其解释

4)设计实现,包含:

 综合和下载过程

 实验关键结果及其解释

 实验结果展示(截图等,可以在此部分展示,也可以单独编写附录)

5)技术小结与感想

6) 参考文献

7)附录(可选,可以附实验效果或关键代码等)

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

任务下达 3 周后考核,按组上交实验报告,提供反映完成情况的证明(可选:实物演示、开发录像、实物照片、开发工程等)。考核标准为:

1)基本要求——系统设计( $30 %$ ):考核功能划分、模块封装及其配合的合理性;

2) 基本要求——功能完备( $30 %$ ):考核各层次基本实验要求的完成程度,检查是否通过仿真和调试加以验证;

3) 基本要求——知识掌握( $20 %$ ):数字电路和 EDA 知识的灵活应用;

4) 扩展要求——专业潜力( $10 %$ ):完成扩展实验要求过程中的自主实践能力;

5)综合发挥—— 报告撰写( $5 %$ ):报告撰写内容完整、条理清晰、图表规范;

6) 综合发挥— —总体表现( $5 %$ ):实验小组成员合作默契,答疑积极主动。

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

项目的特色在于:培养学生有效应用数字电路基础知识、硬件描述语言编程和数字电路EDA 技能开发以 FPGA 为核心的数字电路系统;设计对象丰富了码制知识,起到温故知新的效果且兼具趣味性;发展了格雷码序列递减的新方法,具有潜在实用价值,开阔了学生的视野;便携式实验占用课时少,分层次要求照顾学生能力水平的差异。

参考文献

[1] Ciletti M D, 李广军 等译. Verilog HDL 高级数字设计(第 2 版) [M]. 北京: 电子工业出版社, 2014:392-393.

附件

附件1、主要实验器材的准备情况

本实验在教师的引导下学生们自主地组成实验小组,一般每个小组有 3~4 名成员,但保证便携式实验板人手一块,如附图 1。

2020 年正处于抗疫的特殊时期,便携式实验板人手一块也是抗疫疏散预案的一部分(尽管最终没有必要启动预案),进一步佐证了便携式实验不受实验场地限制的灵活性。


附图 1 实验器材— 便携式实验板

附件2、实验的答疑与辅导情况

本实验采用教师利用 1 个课时统一布置,学生们利用便携式实验板在课下完成的模式。在实验实施过程中,教师和助教安排了多次答疑,且学生可以在 QQ 群线上答疑、通过 QQ 群预约答疑,或是利用课间、课后休息时间灵活答疑。实验器材的便携性使得答疑和辅导可以利用小教室、会议室(如附图 2)进行,甚至可以在走廊(如附图 3)进行。


附图 2 实验指导与答疑(会议室)


附图 3 实验指导与答疑(走廊)

附件3、实验报告的提交与评阅

附图 4 展示了各实验小组提交的实验报告纸介质版本。教师和任选的一名助教背对背地对实验报告进行分项打分评阅(如附图 5中的电子计分表格)。

说明:由于在 2018 学年曾经安排过以“格雷码——自然二进制码”转换为原理的“电子连环”求解实验(第一代实验);随后,在师生“教学相长”相互启发下,改进并推出了本实验(第二代实验),因此2020年秋季学期本实验的实验报告题目又被称为“‘电子连环’重出江湖”。


附图 4 实验报告的提交(注:为了保护个人信息,照片中学生姓名雾化覆盖)


附图 5 实验报告的评阅(注:为了保护个人信息,照片中学生姓名雾化覆盖)

附件 4、本实验所依托课程的教学大纲

本实验依托本科专业核心课程《数字电路与系统》,是该课程中三次课程实验的第一次。

该课程大纲为2019年底修订,由课程负责人从北京航空航天大学教务处“课程申报系统”中打印输出,仅节选了与课程实验有关的页面,用高亮标出,并由PDF格式转换为图片格式插入到本报告,如附图 6、附图 7和附图 8。

说明:《数字电路与系统》课程共安排三次便携式实验(分别占期末总成绩 $5 %$ 、 $5 %$ 和 $1 0 %$ ),本实验为第一次实验,其重点在于 FPGA硬件描述语言设计入门、组合逻辑电路的设计与实现。

数字电路与系统

课程基本信息:

课程中文名称:数字电路与系统
开课学期:秋季
学分/学时:3.5/64(48(理论学时)+ 16(实验 $^ { + 0 }$ (实践学时))
先修课程:电路分析,电子电路(1)
建议后续课程:[大三电子信息工程学院,高等理工学院高等理工,交通运输(民航信息工
面向对象:程,电子信息工程
团队负责人:熊华钢(组长)、高强、何锋、李峭、王彤

一、课程的性质、目的和任务

具体教学目标可分解为以下11点:


附图 6 《数字电路与系统》课程大纲(仅节选与课程实验有关的内容)(节选页面 1)


附图 7 《数字电路与系统》课程大纲(仅节选与课程实验有关的内容)(节选页面 4)

三、教材和参考资料

教材

1主编名称出版时间教材名称版次版社名称
2李洪革,李峭,何锋2017-03-01Verilog硬件描述语言与设计1北京航空航天大学出版社
3阎石2016-04-01数字电路技术基础6高等教育出版社

参考资料

[1]北航数字电路与系统教研组.Verilog HDL硬件描述语言简介[EB/OL].自编讲义, 2019.10.

[2]侯建军,路而红,熊华钢,张晓冬,郭培源.数字电子技术基础(第二版)[M].北京:高等教育出版社,2007.

[3] Wakerly John F. Digital Design- Principles and Practices 4th ed.[M]. Pearson Edu.Inc.,2006,Higher Education Press,2007.

[4] Sutherland S. Verilog HDL Quick Reference Cuide Based on the Verilog-200l Standard [EB/OL]. www.surtherland-hdl.com.

成绩判定方法

课程的考核采用期末集中闭卷考核与平时表现考核相结合的方式。对于实验班,期末考试成绩占 $5 0 %$ ,采用闭卷考试,时间120分钟:实验成绩和平时成绩合计占 $5 0 %$ 。对于非实验班,期末考试成绩占 $7 0 %$ ,采用闭卷考试,时间120分钟:基于便携式实验的课程实验部分成绩 $2 0 %$ 通过实验报评价和现场展示研讨 式评分: 平时成绩占 $1 0 %$ ,反映作业完成情况(含课程实验的硬件描述语言仿真部分)、课堂小测试成绩和课堂出勤情况。期末闭卷考试考查各知识点的比例约为:逻辑代数基础 $10 %$ 、逻辑门电路 $10 %$ 、触发器和存储器 $1 5 %$ 、组合逻辑 $10 %$ 、时序逻辑 $3 0 %$ 、脉冲波形电路 $1 5 %$ 、硬件描述语言 $5 %$ 、其它知识点 $5 %$ ;之所以时序逻辑部分占分比重大,是由于这部分内容融合了包含逻辑代数基础、触发器、组合逻辑等内容的知识点,在考查这部分内容的同时实际上也联带考查了相关内容。

课程中文简介

课程基本信息课程编号:B31023170

附件5、本实验所依托课程的2020年秋季学期教学日历

本实验在《数字电路与系统》课程的 2020 年秋季学期实施,如附图 9、附图 10,该课程日历是学期结束时的版本。采用PDF截图插入到本报告,其中与本实验直接相关的部分用高亮标出。

说明:这仅仅给出一个教学班的教学日历,由于排课不同,其他教学班的时间安排略有微小的差异。

电子信息工程学院 教学日历 填表日期2021年01月

附图 9 《数字电路与系统》2020 年秋季学期教学日历(正面)

V信总上程4院 秋
系名通信与信息系统系任课教师李峰
课程名数字电路与系统B31023170学时48讲座+16课程实验起止日期2020090820210113
班级电子信息工程学院高理工学院人数83地点主M204
序号日期节数教 学 内 容备 注
第一周0908讲座2绪论数制与编码 数制转换
0910讲座2数制与编码 有符号数的编码、补码性质、格雷码逻辑代数基础 逻辑运算符与逻辑门
第二周0915经教务允许,停课1次0929补课
0917讲座2逻辑代数基础 逻辑代数定理公式、逻辑函数标准形式、公式化简
第三周0922讲座2逻辑代数基础 卡诺图、卡诺图化简
0924讲座2逻辑门电路 -CMOS逻辑门
第四周0929讲座2逻辑门电路- 复合逻辑CMOS门、OD门、TG门以OD门应用的讲解替代OC门应用的讲解
0929讲座2逻辑门电路- -TTL门电路(简介)补课,主M203
0931讲座2可编程器件介绍
第五周1006学校统一停课
1008学校统一停课
第六周1013课实2Verilog HDL硬件描述语言基础(上)图一些Mode1Sim练习
指导ModelSim
1015课实2Verilog HDL硬件描述语言基础(中)讲解ModelSim练习
第七周1020课实2指导ISE、介绍课程实验硬件指导分组
指导安排实验一(电子九连环)
1022讲座2组合逻辑 组合逻辑分析
组合逻辑 组合逻辑设计
第八周1027讲座2组合逻辑 编码、译码、数选、比较、加法组合逻辑- 竞争冒险
1029讲座2触发器 基本RS(门门)、同步RS、主从RS/JK
第九周1103讲座2触发器CMOS主从边沿D存储器
1105讲座1触发器(扩展内容)一 亚稳态现象
课实1EDA设计讨论
第十周1110讲座2时序逻辑电路 一分析
1112讲座2时序逻辑电路- -同步时序逻辑设计

见反面

承正面

第11周1117讲座2时序逻辑电路 -计数器、异步时序逻辑设计
小测试1
1119讲座2时序逻辑电路- -序列信号发生器
第12周1124讲座2脉冲波形的产生与整形—施密特触发器讲评小测试1
1126课实2复习状态机编程,指导安排实验二
讲评实验一
第13周1201讲座2脉冲波形的产生与整形 多谐振荡器(对称、非对称)
1203讲座2脉冲波形的产生与整形 多谐振荡器(环形、积分)脉冲波形的产生与整形 单稳态触发器(1)
第14周1208讲座1脉冲波形的产生与整形 单稳态触发器(2)
课实1讲评实验二、指导实验三
1210讲座2脉冲波形的产生与整形 -555定时器(1)
第15周1215讲座1脉冲波形的产生与整形 -555定时器(2)
小测试2
1217讲座2A/D和D/A讲评小测试2
第16周1222讲座2基础知识总复习
1224课实2实验三现场演示答辩(A+B区)
第17周1229课实2实验三现场演示答辩(C+D区)
1231课实2实验总体讲评、课程实验复习
第19周2021-01-13考试(一)201
备注

版本:v03a/202101181540注:2020年秋,根据2019年秋的经验,适当压缩了脉冲电路。

获奖信息

获奖等级 一等奖(最佳工程奖)
年份 2021

作品信息

学时分类 7-12学时

作者信息

作者
李峭,何锋,张玉玺
学校
北京航空航天大学

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