模拟期末考试实验
注意
这题是助教应同学们要求出的用来模拟考试的题目。题目应该是比正式期末考试难的,请大家仅仅将本题作为参考。实际上我没试过这题要花多少时间,随便出的。
以及,由于题目仅供参考,请不要向助教询问题目如何进行解答。
背景知识
摩斯电码表,数字(16 进制)部分:
Number | Wave |
---|---|
0 | ----- |
1 | .---- |
2 | ..--- |
3 | ...-- |
4 | ....- |
5 | ..... |
6 | -.... |
7 | --... |
8 | ---.. |
9 | ----. |
A | .- |
B | -... |
C | -.-. |
D | -.. |
E | . |
F | ..-. |
在本题中,我们规定短于 1 秒为短按,长于 1 秒为长按。
步骤 1(5 分):译码器
本步骤请实现不带译码的数码管的译码模块。
输入:由 4 位拨码开关进行控制(0000 到 1111)。
输出:在数码管上对应显示 0 到 F。
步骤 2(15 分):简单摩斯电码翻译
本步骤中我们将实现摩斯电码的翻译。
实现本步骤默认步骤 1 已经完成。
输入:两位拨码开关,00 表示短按,01 表示长按,10 表示结束。CLK 用于进行编码输入,每次 CLK 按下表示输入 1 位摩斯电码 / 结束输入。
输出:1 位 LED 灯,表示是否为错误的(表外的)摩斯电码。7 位不带译码的数码管,在完成输入时,显示对应的数字。
验收时将随机进行两个数字和 1 个字母的检查。
步骤 3(10 分):长按和短按
本步骤中,我们将实现短按和长按的判定。
利用时钟和计数寄存器,我们可以在电路中完成按钮按下的时间的判断。
当按钮按下后(之前为 0,现在为 1),使用同步的方式(响应时钟而不是按钮)将计数寄存器清零。
当按钮持续按下时,每次时钟上升沿到来,将计数器加 1。
当计数器大于某个值时,激活长按灯,否则激活短按灯。
输入:1M 时钟,CLK 按钮。
输出:两个 LED 灯,分别表示长按和短按。
步骤 4(5 分):完整的摩斯电码译码
实现本步骤默认步骤 1-3 已经完成。
本步骤中,我们将实现一个较为综合的摩斯电码译码。
通过按钮,按下一系列由长按和短按组成的信号序列,将译码结果输出在不带译码的数码管上。若不匹配,则输出错误信号。
按下 RST 时,重置状态机。
请仔细思考状态机进行转移的条件。
输入:1M 时钟,CLK 按钮,RST 按钮
输出:1 位 LED 灯,表示是否为错误的(表外的)摩斯电码。7 位不带译码的数码管,在完成输入时,显示对应的数字。
步骤 5(5 分):示波器的使用
请将输入的 1M 时钟,通过 FPGA 进行 6 分频(即输出的频率为输入的频率的 1/6),将两个信号接到示波器的两个通道上进行显示。