建立Verilog文件
PS
输入的时钟是100MHZ
(周期10ns),我们的目标是输出一个1KHZ
(周期1000_000ns)的方波,定义一个计数器计数到50000-1
时翻转输出就可以很容易的得到1KHZ
的方波,新建一个squarewave.v
文件填入以下代码
module square_wave_gen(
input clk,
input rst_n,
output sq_wave
);
parameter TCOUNT = 16'd49_999;
reg sq_wave_reg;
reg [15:0] C1;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)
begin
sq_wave_reg <= 1'b0;
C1 <= 16'd0;
end
else if(C1 == TCOUNT)
begin
sq_wave_reg <= ~sq_wave_reg;
C1 <= 16'd0;
end
else
C1 <= C1 + 1'b1;
end
assign sq_wave = sq_wave_reg;
endmodule
建立Block Design
参考https://segmentfault.com/a/11...
生成如图所示,此时FCLK_CLK0
的输出频率为100MHZ
在Diagram
窗口右键Add Module
添加刚刚的square_wave_gen
模块
按图连接模块,并在square_wave_gen
模块上右键选择Make External
导出端口,结果如图
产生HDL Wrapper
导出文件选择Create HDL Wrapper…
可以在生成的design_1_wrapper
文件中看到输出引脚
添加引脚约束
添加Zybo-Master.xdc
文件,这里使用JE_PMOD
的Pin 1(V12)
做为输出
修改约束文件如下所示
set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { sq_wave }];
产生位元流 (bitstream)
当 bitstream 产生完成后,要将刚刚产生的硬件代码输出给Xilinx SDK
去。
点击File -> Export -> Export Hardware
完成后,启动 Xilinx SDK
Xilinx SDK
打开后界面如图所示
然后建立一个Application Project
然后建立一个main.c
填入
int main(){
return 0;
}
Program FPGA
进行FPGA
的烧录
在工程左侧Procject Explorer
栏,右击工程->RunAs->Launch on Hardware
运行
实验结果
示波器连接对应IO输出1KHZ方波
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。