杭州萧山做网站公司互联网营销的十五种方式
文章目录
- 一、Quartusll_18.1和VS Code软件的关联
- 二、DE2-115的时钟电路
- 三、流水灯的分层次设计
- 四、总结
一、Quartusll_18.1和VS Code软件的关联
1.先打开Quartus II 软件,然后选择菜单栏“Tools”下的“Options…”。
2.点击“Options…”,在弹出的对话框中,选择“General”选项卡下的“Preferred Text Editor”,默认使用的编 辑器是“QuartusII Test Editor”。
在“Text editor:”栏选择“Custom”选项并在“Command-line”栏通过路径浏览按钮选择 VS Code的路径。路径定位到“Code. exe”启动文件,再在后缀上加入-g %f:%l,路径根据自己的VS Code路径修改(就是-g前面冒号中的路径)。然后再点击“OK”完成 Quartus II 18.1 与VS Code的关联。
二、DE2-115的时钟电路
DE2-115 包含一个生成 50MHz 频率时钟信号的有源晶体振荡器,另有一个时钟缓冲器用来将缓冲后的低抖动 50MHz 时钟信号分配给 FPGA。这些时钟信号用来驱动 FPGA 内的用户逻辑电路。开发板还包含两个 SMA 连接头,用来接收外部时钟输入信号到 FPGA 或者将 FPGA的时钟信号输出到外部。另外,所有这些时钟输入都连接到 FPGA 内部的 PLL 模块上,用户可以将这些时钟信号作为 PLL 电路的时钟输入。
DE2-115 板子上的时钟分配信息和 FPGA 芯片相关的引脚配置信息如下图所示。
所以1秒所需的时钟周期数为50000000次。
三、流水灯的分层次设计
在DE2-115开发板上,用Verilog设计一个LED流水灯实验:用6个LED完成周期为1秒的跑马灯效果。
top顶层模块
module led_top(input clk,input reset_n,input pause,output [5:0] led
);
// 顶层模块:实例化各子模块
wire clk_1hz; // 分频时钟信号clock_divider divider_inst(.clk(clk),.reset_n(reset_n),.clk_1hz(clk_1hz)
);led_display display_inst(.clk(clk),.reset_n(reset_n),.pause(pause),.clk_1hz_en(clk_1hz),.led(led)
);
endmodule
分频模块
module clock_divider(input clk,input reset_n,output reg clk_1hz
);
// 分频模块:50MHz -> 1Hz
parameter MAX_COUNT = 26'd49_999_999; // 50MHz时钟分频always @(posedge clk or negedge reset_n) beginif (!reset_n) beginclk_1hz <= 1'b0;end else beginif (counter >= MAX_COUNT) begincounter <= 26'd0;clk_1hz <= ~clk_1hz;end else begincounter <= counter + 1;endend
endreg [25:0] counter;
endmodule
显示模块
module led_display(input clk,input reset_n,input pause,input clk_1hz_en, // 来自分频模块的使能信号output reg [5:0] led
);
// 显示模块:包含状态机和输出控制
reg [2:0] state;
reg running;// 状态机控制
always @(posedge clk or negedge reset_n) beginif (!reset_n) beginstate <= 3'd0;running <= 1'b1;end else begin// 处理暂停按键if (pause) running <= ~running;// 状态转移(使用分频后的时钟使能)if (running && clk_1hz_en) beginstate <= (state == 3'd5) ? 3'd0 : state + 1;endend
end// LED输出控制(保持不变)
always @(*) begincase(state)3'd0: led = 6'b000001;3'd1: led = 6'b000010;3'd2: led = 6'b000100;3'd3: led = 6'b001000;3'd4: led = 6'b010000;3'd5: led = 6'b100000;3'd5: led = 6'b100000;default: led = 6'b000000;endcase
end
endmodule
引脚连接配置图
烧录结果
FPGA——流水灯
四、总结
通过本次实验,初步了解到了计数器的思想,而且通过分层次化设计使实验更具有可视性。但是在本次实验中也存在不足,需要一直按着暂停键才能达到暂停的效果。所以,接下来我需要取研究如何实现按下一次实现暂停,再次按下又恢复流水灯效果。
参考资料
https://blog.csdn.net/Lee_tr/article/details/122487570
https://blog.csdn.net/crrrd/article/details/136227780
https://blog.csdn.net/LX567567/article/details/138727302