FPGA 电路开发入门实验(1~6)
(一)用1个拨码开关控制所有的LED灯亮灭
(二)
(2.1)放置2个2-4译码器模块,则总共有2组SW,每组2个,2组LED,每组4个,每组SW分别控制其对应的LED组。
(2.2)参照代码,设计一个3-8译码器,完成类似的拨码开关实验。注意代码中的信号宽度设定。
(2.3)自行查阅手册中的7段译码器管脚对应关系,用4个拨码开关控制一个7段译码器的数字,从0-9-A-F,共16个数字和字母。
(三)计数器、波形仿真、SignalTap
(3.1)参照代码,设计一个0-17的计数器,当计数值为17的时候,OV输出1,其他输出0,注意设定合理的信号位宽。
(3.2)针对以上计数器,修改输出逻辑,当计数值为0-8时,OV输出0,9-17时OV输出1• 用SignalTap验证
(四)时间基准电路和带使能的多周期计数器
(4.1)参照代码,把后级计数器的计数范围改为0-15。
(4.2)把计数器的0-15计数值经过译码,在DE0 的HEX LED上显示成0-9-A-F的十六进制数。
(4.3)修改时间基准发生器,设计一个使用2个HEXLED,精度为0.1秒,范围为0-9.9秒的计时秒表。
(4.4)自行设计上面计时器的附加控制功能(清零、暂停)
(5)编译下载电路观察现象
• 拨动SW0开关,观察LED的闪烁变换情况
• 设计新的功能
– 在原有的电路基础上,添加方向选择功能。
– SW0仍然是移位寄存器组的输入
– 使用SW1开关,控制移位寄存的方向
– 从实验现象上应当能够看到,SW1可以控制LED闪烁的
移动方向,以及控制SW0值的对LED组的输入位置(即
从LED组的最左边或是最右边)
现象:当不拨动sw1时,拨上开关sw0,LEDG5~LEDG0 依次闪亮
把开关sw0拨下来,灯也是按照这个顺序熄灭。
当把Sw0拨上去时,反顺序亮起。
关sw1拨下来,LED灯也是反顺序熄灭。
(6) 拨动开关,观察不同频率的正弦波
– 电路的工作时钟是50MHz
– 请回答,你能得到的正弦波频率和计数器增量值的对应关系是什么?
– 请回答,你能得到的最低频率的正弦波是多少?设该频率为f1
– 请思考,能否有什么方法能够得到比f1频率还低的正弦波
计数器模块内部电路结构:
ROM内部电路结构:
不同的计数增量值对应的波形
1 计数增量为1时,正弦波频率约0.39 MHZ
2 计数增量为2时,正弦波频率约0.78 MHZ
3 计数增量为8时,正弦波频率3.125MHZ
问题回答:
(1)正弦波频率和计数器增量值成 线性关系。
(2)正弦波的最低频率f1约0.39 MHZ。
(3)增加计数器增量或减小计数器数据位宽。
对计数器进行改动,修改计数增量信号为10比特,计数值信号为10比特。
– 把计数增量输入信号分配到10个拨码开关上
– 把计数值信号的高7位分配为ROM的地址,低3位悬空不使用。
– 编译、下载电路,拨动拨码开关,观察最低频率有什么变化。