分析综合如果出现语法错误会有Analyzing Synthesis Files Completed窗口提示:

用户需要根据提示将问题一一改正,然后再次点击 Analyze Synthesis Files 直到Analyzing Synthesis Files Completed窗口不再报错以后,点击Close:

当然,可能此时Message窗口还有这些错误提示,暂时不管。( 注意:不要把 message栏中的错误提示误认为是综合分析的错误提示了, message 栏中的错误提示是告诉用户这个组件的某些设置有问题,这些是需要在接下来的步骤中解决的。)

Component Editor 在分析综合源文件后会根据组件端口的信号名进行预分组,这些可能不太正确,需要用户手动调整。用户可在Signals & Interfaces页面中对组件的接口和信号进行手动调整(比如进行端口的分组,信号的编辑、删除、新增)。

设置时钟信号,选中左侧的clk[1]信号,在右侧信号参数窗口修改设置如下:

设置复位信号,选中左侧的reset_n[1]信号,在右侧信号参数窗口修改设置如下:

点击左侧的as,将右侧的Name改为as_slave,Associated Clock设置为clock,Associated Reset设置为reset。(注:完成这一步骤的设置后,下方的Messages中的Error数量由5个变为4个。)

点击左侧的avs_address[1]信号,在右侧信号参数窗口修改设置如下:

点击左侧的avs_read[1]信号,在右侧信号参数窗口修改设置如下:

点击左侧的avs_readdata[32],在右侧信号参数窗口修改设置如下:

点击左侧的avs_write[1],在右侧信号参数窗口修改设置如下:

点击左侧的avs_writedata[8],在右侧信号参数窗口修改设置如下:

点击左侧最下面<>选择conduit:

点击端口类型conduit_end,在右侧信号参数窗口修改设置如下:

然后左击选中led[1]信号,左击不放,拖拽led[1]信号到端口类型conduit_end下面,并确保右侧信号参数窗口设置如下(应该是output, 这里的图后期会改):

左击选中端口类型avalon_slave_0,继续右击该端口类型并选择菜单Remove 移除该多余的端口类型:

至此,已经完成了pwm IP的所有设置,点击Block Symbol 选项卡,可以看到完整的端口信息:

点击最下方的Finish...按钮保存(点击Finish之前要再次检查下as_slave的Associated Reset是reset而不是none),此时会弹出Save Changes的提示框,点击Yes, Save进行保存。

保存完成后,Component Editor工具自动退出,返回Platform Designer界面。此时,在IP Catalog下便可以看到我们创建的pwm IP:

接下来将pwm IP 添加到DE10_NANO_SoC_FB 的HPS系统中。

双击pwm,然后点击Finish就给HPS系统添加了一个名为pwm_0的IP 模块:

(1) 右击pwm_0选择Edit...将模块名称改为pwm;

(2)连接pwm模块的clock信号到clk_0模块的clk信号端;

(3)连接pwm模块的reset信号到clk_0模块的clk_reset信号端;

(4)连接pwm模块的as_slave信号到mm_bridge_0模块的m0信号端;

(5)双击Export栏的Double-click导出端口,并重命名为led;

(6)修改pwm 模块相对于h2f_lw_axi_master总线的及地址0x0000_6000(pwm 模块挂在h2f_lw_axi_master总线)。

参考DE10_NANO_SoC_FB 的顶层文件DE10_NANO_SoC_FB.v可知 led_pio模块是绑定到FPGA 端的LED[7:1],LED[0] 也被占用,所以这里我们可以先删掉led_pio模块,具体做法是取消掉Platfom Designer 窗口led_pio模块前面的复选框即可:

然后 点击Generate HDL...——Generate——Close——Close——Finish:(这个过程会比较久)

点击OK:

点开Project——Add/Remove Files in Project...

检查soc_system.qip文件已经存在(模板工程之前已经是添加过了的):

在顶层文件DE10_NANO_SoC_FB.v做如下修改并保存:

(1)设置stm_hw_events信号位宽为[20:0]

(2)注释掉语句 assign LED[7:1] = fpga_led_internal;

(3)在语句assign stm_hw_events = {{15{1'b0}}, SW, fpga_debounced_buttons};中去掉fpga_led_internal

(4)打开DE10_NANO_SoC_FB工程的soc_system文件夹下的soc_system_inst.v文件找到新增的led_writeresponsevalid_n 端口并复制:

(6)增加语句 .led_wire ( LED[1] ),

(7)注销掉语句.led_pio_external_connection_export ( fpga_led_internal ),

保存完DE10_NANO_SoC_FB.v,点击如下按钮进行工程全编译:

成功生成sof文件: