FPGA—约翰逊计数器
D
图5 建立激励文件
激励文件的设计可以分别在stop信号有效与无效的时候进行左移或右移操作,来验证设计的正确性。
根据板子锁定引脚,并生成下载文件。
本次试验中,输入端口LEFT,RIGHT,STOP,CLK信号分别用一个拨动开关来产生,分别为端口p20,p26,p32,p54。数据输出用LED灯显示,q[0]~q[3]分别对应端口p22,p23,p24,p25。在实验板上,拨动开关在上面是低电平,在下面是高电平。低电平时LED灯发光,高电平时不发光。
生成下载文件。
图6 生成下载文件
实验结果及分析
仿真波形:
图7 仿真时间0ns~250ns
由图形可以看出此时STOP信号为低电平即无效,由于是时序仿真所以在LEFT信号有效后,输出数据开始移动,并且移动正确。
图8 仿真时间250ns~500ns
从图中不难看出,在STOP信号有效时,输出数据不变,即是停止移动。
结果分析:
本次设计为4位约翰逊计数器,通过仿真波形可知LEFT控制端控制寄存器向左移位,RIGHT控制端控制寄存器向右移位,并将最后一位输出取反后输入到第一位。所以设计正确,在下载到板子上之后,拨动开关2、3打到低电平,拨动开关1打到高电平,然后反复拨动拨动开关4,会发现LED灯依次向左点亮后有依次熄灭这样循环。所以设计结果满足功能。
体会
这一次的实验让我感到自己有很大的不足,对ISE的运用还欠缺许多,基本可以说是一窍不通。所以,这次实验以后还要花大量的时间在FPGA的学习上,希望可以从中学习到很多的东西。
同时通过这个简单的实验,让我感受到了数字电路设计的魅力,这将是不同于以往单片机编程的一种体验。
附件
激励文件:
`timescale 1ns / 1ps
module jc2_jc2_sch_tb();
// Inputs
reg LEFT;
reg RIGHT;
reg STOP;
reg CLK;
// Output
wire [3:0] q;
// Bidirs
// Instantiate the UUT
jc2 UUT (
.LEFT(LEFT),
.RIGHT(RIGHT),
.STOP(STOP),
.CLK(CLK),
.q(q)
);
// Initialize Inputs
initial
begin
FPGA—约翰逊计数器 来自淘豆网m.daumloan.com转载请标明出处.