Lattice ICE40LP8K开发

news/2025/1/16 19:07:47/文章来源:https://www.cnblogs.com/dy-stairmed/p/18517380

一、开发工具:

ICEcube2,界面非常原始,只有PLL IP核添加功能,其他IP核貌似只能使用primitive替换。

不支持时序分析、在线仿真等功能。

二、原语使用

  1. 全局布线资源

在 iCE40 FPGA 设备中,有 8 个高驱动缓冲器,称为全局缓冲器(Global Buffers,GBUFx),它们连接到 8 条低偏斜(low-skew)的全局线。全局缓冲器和全局线的主要设计目的是用于时钟分布,但也适用于其他高扇出信号,如复位(set/reset)和使能(enable)信号。

使用:

module top (input wire clk_in,    // 输入时钟信号output wire clk_out   // 输出经过全局缓冲器的时钟
);wire clk_gbuf;// 实例化全局缓冲器,将输入时钟连接到 GBUF0SB_GB gbuf_inst (.USER_SIGNAL_TO_GLOBAL_BUFFER(clk_in),  // 用户时钟信号输入.GLOBAL_BUFFER_OUTPUT(clk_gbuf)        // 全局缓冲器输出信号);assign clk_out = clk_gbuf;endmodule
  1. 高速内部晶振原语

与ICE40UP系列不一样!ICE40LP8K内部没有高速晶振,只能从外部输入

ICE40UP使用内部高速晶振primitives:

//************ intern HSOSC SETTING*************************//   Name           Values          Description//  CLKHF_DIV   "0'b00" (default)   0'b00 = 48 MHz//              "0'b01"             0'b01 = 24 MHz//              "0'b10"             0'b10 = 12 MHz//              "0'b11"             0'b11 = 6 MHz
//    HSOSC
//        #(
//            .CLKHF_DIV ("0b00")
//        ) OSCInst0 (
//            .CLKHFEN (1'b1),
//            .CLKHFPU (1'b1),
//            .CLKHF (CLKHF)
//        );
  1. IO原语SB_IO

CS64中使用IOB原语接受PAD信号传递到内部逻辑,ICE40LP系列该原语进行了改动和精简。使用SB_IO 替换

    // 双向 I/O 使用 SB_IO 替代 BB_B
SB_IO  #(.PIN_TYPE (6'b101001),.PULLUP (1'b1)
)U_IBUF_MISO (.PACKAGE_PIN(SPI_MISO),          // Bidirectional pin.OUTPUT_ENABLE(s_IOL_D_PADDT),  // Tri-state control.D_OUT_0(s_IOL_D_PADDO),         // Output data (synchronized output).D_IN_0()                        // Input data (if needed)
);

  1. ram使用 SB_RAMXX

替换ICE40UP中的ram ip核,(一个开发工具,连ram ip核都不提供....)

SB_RAM256x16 Spike_Threshold_DOWN_ram_16_256 (.RDATA(Spike_THR_L),                  // 读取数据输出.RADDR(Spike_THR_DOWN_CHANNEL),       // 读取地址.RCLK(clk),                           // 读取时钟.RCLKE(1'b1),                         // 读取时钟使能.RE(Spike_THR_DOWN_RD_EN),            // 读取使能.WADDR(spike_thr_shift_count - 1),    // 写入地址.WCLK(clk),                           // 写入时钟.WCLKE(1'b1),                         // 写入时钟使能.WE(ram_wr_en_thr_down),              // 写入使能.MASK(16'b0),                         // 写入掩码(不使用掩码).WDATA(wr_spike_thr_L)                // 写入数据
);
  1. FIFO

将Radiant中生成的FIFO IP核的.v文件拉过来,在ICEcube2中可以直接使用,仿真也通过。(神奇,且无语)

    FIFO_I18D1024 U_TX_BUF(.clk_i            ( SYS_CLK                       ),.rst_i            ( ~sys_nRst | r_FIFO_RST[7]     ),.wr_en_i          ( r_TX_BUF_WEN                  ),.rd_en_i          ( r_TX_BUF_REN                  ),.wr_data_i        ( {2'b0, r_TX_BUF_WDAT[15:0]}   ),.full_o           ( s_TX_BUF_FULL                 ),.empty_o          ( s_TX_BUF_EMPTY                ),.data_cnt_o       ( s_data_cnt                    ),.rd_data_o        ( s_TX_BUF_RDAT[15:0]           ));
  1. PLL

PLL IP核可以在ICEcube中调用,但是实际使用中PLL的PLACE有着限制,即不是所有IO口输入的系统时钟信号都可以(也是很无语)。

手头只有ICE5LP系列(不是ICE40LP系列!),用的内部高速晶振,后面接PLL报错...

E2694: PLL: U_system_clk_nrst_setting.PLL_SYSCLK_inst.PLL_SYSCLK_inst could not be placed E2693: PLL placement is infeasible for the design E2055: Error while doing placement of the design

后面查了下,使用限制如下:(没有提到内部产生的时钟的使用限制)

但是好在关于内部高速晶振的描述:

B_HFOSC primitive generates 48 MHz nominal clock frequency within +/- 10% variation, with user-programmable divider value of 1, 2, 4, and 8. The HFOSC can drive either the global clock network or fabric routes directly based on the clock network selection.

好像可以直接作为系统时钟使用,因此,把HFSOC后面接个SB_GB就作为系统时钟了。

SB_HFOSC OSCInst0 (
.CLKHFEN(1'b1),
.CLKHFPU(1'b1),
.CLKHF(CLKHF)
);
defparam OSCInst0.CLKHF_DIV = "0b00";//SB_GB inst***********************************   SB_GB sys_clk_gbuf_inst (.USER_SIGNAL_TO_GLOBAL_BUFFER(CLKHF),  // clk input.GLOBAL_BUFFER_OUTPUT(o_sys_clk)        // GBUF OUT);

三、Modelsim仿真

需要在modelsim中添加相应的ICE40LP系统的仿真库,

操作如下:

Click “Add Existing Files” and add the following files:

counter_sbt.v, sb_ice_syn.v, sb_ice_lc.v, counter_tb.vhd for Verilog post-route timing simulation

The sb_ice_syn.v, sb_ice_lc.v verilog files can be found in $INST_DIR/verilog.

If your design contains PLL, add ABIPTBS8.v in $INST_DIR/verilog.

If the design contains Hardened IP primitives, add the encrypted simulation library

sb_ice_ipenc_modelsim.v available in $INST_DIR/Verilog

添加后就可以在Modelsim中进行仿真了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安川YASKAWA工业机器人板卡维修策略

一、安川YASKAWA工业机器人板卡识别故障症状 首先,需要准确识别电路板故障的症状。这通常包括安川YASKAWA机器人操作不稳定、错误代码频繁出现、某些功能失效或整体性能下降等。通过仔细观察和诊断,可以确定问题是否源自电路板。 在工业机器人领域,广州子锐机器人技术有限公…

20222311 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实践内容 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程(2)通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语言描述原理,不…

Linux安装Python 3.11

Linux安装python 在Linux上安装Python 3.11,你可以按照以下步骤进行。这些步骤以CentOS为例,但其他Linux发行版的过程大同小异,可能只需稍作调整。 1. 检查Python版本 首先,打开终端,检查系统上是否已安装Python 3.11: python3.11 --version # 或者 python3 --version如果…

java项目自启动方案——jar包做成服务(Windows版本)

需求:公司做的很多项目都是属于客户端—服务器形式,在客户端部分运行了属于面向用户操作的项目jar包,客户端机器就不像服务器那样,经常会遇到重启机器的情况,所以让我们的项目能自启动就是个必须的工作。方案: (1)环境:电脑需要安装Microsoft.NETFramework 4 ,如果有…

echarts 睡眠时间段+日期

效果图:关键方法代码:const initChartDataTwo = (scollectT, dataL) => {//给一个测试的数据 scollectT = [ "2024-10-29", "2024-10-25", "2024-10-24", "2024-10-22", "2024-10-18", "2024-10…

威联通NAS开机报错数据恢复

针对威联通NAS开机报错的数据恢复问题,以下是一些建议的解决步骤和恢复方法: 一、初步检查与诊断 检查硬件状态: 确保NAS设备的电源正常连接,并检查所有硬盘是否都正常工作。 如果可能,尝试重新插拔硬盘或更换故障硬盘。 2.查看错误代码和日志: 登录NAS管理界面(如果还能…

服务器漏洞修复和php一键安装包环境 nginx 安装拓展模块

服务器漏洞修复header头缺失问题https://blog.51cto.com/u_16213703/10249280add_header X-XSS-Protection 1; mode=block;add_header X-Frame-Options SAMEORIGIN;add_header X-Content-Type-Options nosniff;add_header X-Download-Options: noopen;add_header Set-Cookie &q…

为什么要有PDM数据管理系统

企业需要有PDM数据管理系统,是因为它具备如下功能:一、优化数据组织与存储;二、提升团队协作效率;三、确保数据安全与可追溯性;四、加快产品开发周期;五、支持智能决策和数据分析。优化数据组织与存储可以减少重复工作,并确保数据的一致性和可靠性。一、优化数据组织与存…

单据表头录入控件长度调整

单据表头的控件长度,如果单个控件改变长度,就会出现错位的情况,所以只有所有控件长度统一调整才行,方法如下 1、修改安装目录S3\Program目录下Web.Config中的相关配置2、记事本打开web.config找到DefaultSkin,把这个DefaultSkin改成owner 。改成: defaultSkinName="…

Vue组件化–知识补充

全局CSS和局部CSS 当我们需要CSS只在当前的.vue文件中生效可以在style后面添加scoped创建vue项目的方式 1.Vue Cli:vue create 基于--->webpack 2.npm init vue@latest 基于-->vite1.安装一个本地工具:create-vue2.使用create-vue创建一个Vue项目

jmeter压测接口报出现503解决办法

jmeter界面还有503报错2024/10/30 17:53:54 [error] 6522#0: *60199372 limiting connections by zone "perip", client: 116.25.118.145, server: rider-mall.test3.fnjkj.cn, request: "POST /rider/order/userBrowse/userOrderQuery HTTP/1.1", host: &…

快消行业 | 超高效拜访路线规划, 抓住“每一片”利润

高效拜访,关键在于科学规划。如何避免漏访、无效拜访或拜访不及时?拜访路线规划是破局之策,它直击终端拜访的核心痛点,助力实现最佳拜访效果,进而提升终端门店销售业绩。 传统拜访模式下,业务人员往往因无提前规划而效率低下,问题频发。科学的拜访路线规划,能精准缩减行…