创建工程
- File 选项下,选择新建工程New..
2.Name 是指工程名;Creat in 指工程路径;
![](https://file.jishuzhan.net/article/1760942181436100609/8e8a3f497af74a3608cf36b7bf821b97.webp)
3.选择对应的 器件,本测试示例使用的是 GW1N4BLV_LQFP144C6I5;
![](https://file.jishuzhan.net/article/1760942181436100609/8d9d65c9889a0cdcdf33d8ae141e2206.webp)
4.选择好器件型号,单击Finish;
![](https://file.jishuzhan.net/article/1760942181436100609/4becac0fadc576a93114853e59d21398.webp)
5.给工程增加VerilogFile 即 .v 文件
![](https://file.jishuzhan.net/article/1760942181436100609/2025fb3a6e8767a65fe96fb205cc2298.webp)
添加OSCIP
- 单击 IP Core Generator,找到OSC IP, OSC频率默认是250Mhz,可能存在偏差;
![](https://file.jishuzhan.net/article/1760942181436100609/1f3b7ef02085740e75cd987fd6e214a4.webp)
2.分频设置为50 即 250Mhz/50 =5Mhz;
![](https://file.jishuzhan.net/article/1760942181436100609/0f5140017cd6112d4fa5ca054328f50d.webp)
- OSC IP 生成后 会自动添加一个 gowin_osc.v 文件
![](https://file.jishuzhan.net/article/1760942181436100609/c3208f1d0007101f7e8fc939c81b6043.webp)
定义信号线,输出 OSC 时钟
- 单击 Floor Planner ,分配信息线到对应的引脚;
![](https://file.jishuzhan.net/article/1760942181436100609/5f07314d9942a3aff6d209ce2905a18d.webp)
![](https://file.jishuzhan.net/article/1760942181436100609/65ca9d379b2ee1af022e9a556392eca4.webp)
定义了一个名为 Gowin_OSC
的模块,它有一个输出端口 oscout
,用于输出振荡器的信号。然后,通过实例化一个名为 osc_inst
的 OSC
模块,并设置了 FREQ_DIV
和 DEVICE
的参数,将 osc_inst
的 OSCOUT
输出端口连接到 oscout
。
接下来,代码定义了一个 wire
类型的信号 clkin
,用于接收振荡器模块输出的信号。
然后,通过实例化一个名为 my_osc
的 Gowin_OSC
模块,将 oscout
端口连接到 clkin
,这样 clkin
就可以接收到振荡器模块的输出信号。
最后,使用 assign
语句将 clkin
赋值给 test_clk
,这样 test_clk
就可以使用 clkin
的信号。
![](https://file.jishuzhan.net/article/1760942181436100609/c3208f1d0007101f7e8fc939c81b6043.webp)
![](https://file.jishuzhan.net/article/1760942181436100609/41b8b9622abea532a92be462c0c0c107.webp)
使用 OSC 时钟信号
1.clkin 信号可以输出到 test_clk ,也可以被 时序逻辑模块使用;如:使用了 always @(posedge clkin)
来表示在 clkin
的上升沿触发。也就是说,每当 clkin
信号上升沿到来时,led
的值将取反。
![](https://file.jishuzhan.net/article/1760942181436100609/b76d8cb0d647307b2eecf162391b0b2e.webp)