Lattice ICE40LP8K开发
一、开发工具:
ICEcube2,界面非常原始,只有PLL IP核添加功能,其他IP核貌似只能使用primitive替换。
不支持时序分析、在线仿真等功能。
二、原语使用
全局布线资源
在 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;
// 实例化全局缓冲器,将输入时钟连接到 GBUF0
SB_GB gbuf_inst (
.USER_SIGNAL_TO_GLOBAL_BUFFER(clk_in), // 用户时钟信号输入
.GLOBAL_BUFFER_OUTPUT(clk_gbuf) // 全局缓冲器输出信号
);
assign clk_out = clk_gbuf;
endmodule
高速内部晶振原语
与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)
// );
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)
);
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) // 写入数据
);
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] )
);
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中进行仿真了。
Lattice ICE40LP8K开发的更多相关文章
- FPGA - 认识FPGA
一.何为FPGA? FPGA,英文全拼:Field-Programmable Gate Array 现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集 ...
- Lattice 开发工具Diamond 相关版本下载地址
百度网盘: https://wenku.baidu.com/view/21b98975192e45361066f5f3.html 官网下载: http://www.latticesemi.com/Su ...
- 基于Lattice_CPLD/FPGA Diamond 开发流程
本文主要介绍了Lattice CPLD/FPGA集成开发环境的使用方法,并通过点亮开发板(Mach XO2 Breakout Board)上位号为D2的LED这一实例来演示其开发流程. 1. ...
- 【lattice软核】MICO8流程
The LatticeMico System software is composed of three bundled applications: Mico System Builder (MS ...
- 论文翻译——Lattice indexing for spoken term detection
第II节简要介绍与本文有关的先前工作第III节介绍文中使用的定义以及术语 第IV节介绍如何从原始ASR lattices中生成倒排索引结构 第V节详细介绍了ASR结构以及实验使用的数据 第VI节提供了 ...
- Lattice并购案和我国FPGA发展道路
引用 http://www.cnblogs.com/alifpga/p/9292588.html FPGA作为通信.航天.军工等领域的关键核心器件,是保障国家战略安全的重要支撑基础.近年来,随着数字化 ...
- Lattice并购案&我国FPGA发展路径
FPGA作为通信.航天.军工等领域的关键核心器件,是保障国家战略安全的重要支撑基础.近年来,随着数字化.网络化和智能化的发展,FPGA的应用领域得到快速扩张.美国在FPGA领域拥有绝对的垄断优势,已成 ...
- Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)
需求说明:Lattice系统FPGA入门 内容 :Lattice与Altera.Xilinx对比 来自 :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...
- 真正的RISC-V开发板——VEGA织女星开发板开箱评测
前言 由于最近ARM公司要求员工"停止所有与华为及其子公司正在生效的合约.支持及未决约定",即暂停与华为的相关合作,大家纷纷把注意力投向了另一个的处理器架构RISC-V,它是基于精 ...
- FPGA开发工具套餐搭配推荐及软件链接 (更新于2020.03.16)
一.Xilinx(全球FPGA市场份额最大的公司,其发展动态往往也代表着整个FPGA行业的动态) (1) Xilinx官方软件下载地址链接: https://china.xilinx.com/supp ...
随机推荐
- Microsoft Ignite China, Watch Party - Why adopt Windows 11 today 升级了啥?
Microsoft Ignite 2021 大会采用线上直播形式,围绕云技术.数据智能.未来工作方式.全民创新及数据安全等技术议题,结合全球及本地最新产品发布.科技趋势与成功案例,将带您体验独一无二的 ...
- String真的不可变吗?
Java中的String是不可变对象 在面向对象及函数编程语言中,不可变对象(英语:Immutable object)是一种对象,在被创造之后,它的状态就不可以被改变.至于状态可以被改变的对象,则被称 ...
- C++20新特性
C++20新特性 语言特性 协程 concept概念 指定初始化器 lambda表达式模板语义 范围for循环增加初始化器 [[likely]] [unlikely]属性 废弃隐式捕获this 非类型 ...
- SparkStreaming本地化策略性能调优与使用场景分析
1.背景介绍:平台使用的华为FI C203的版本,通过SparkStreaming消费kafka数据后,进行算法处理入库.其中在算法部分耗时为4秒,每个批的数据量在30MB左右.执行算法部分的算子分区 ...
- python pyqt6 QComboBox 设定下拉框背景颜色
设定QComboBox 的背景颜色,边框设定,以及下拉框的背景颜色以及边框设定, selection-background-color 不生效可忽略 xxx_source = QComboBox(se ...
- 【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
[标题]错误码处理 [问题分类]调整归档 [关键字]关闭归档.YAS-02079.replication mode [问题描述]执行alter database noarchivelog 关闭归档时, ...
- 【YashanDB数据库】Ubuntu系统加载Yashan C驱动后无法使用PHP
[问题分类]驱动使用 [关键字]驱动使用.PHP.Ubuntu.C驱动 [问题描述] 客户将YashanDB的C驱动lib加载到环境变量LD_LIBRARY_PATH后,PHP报错:PHP Fatal ...
- MyBatis——案例——修改(修改全部字段,修改动态字段)
修改-修改全部字段 1.编写接口方法:Mapper接口 参数:所有数据 结果:void(通过异常捕获判断成功修改与否) int (表示sql语句影响的行数) /** ...
- nexus 部署与设置
安装nexus df -h 先查看目录磁盘空间,我安装的版本占用了四个G 空间,目录文件空间不够导致启动失败 上传 nexus 压缩包,并解压 查询 8081 端口号是否被占用 sudo netsta ...
- Qt构建cmake工程方法总结
由于工作需要,最近打算统一将所有C/C++项目都改成使用cmake编译.传统后台业务问题不大,但是有些牵涉到跨平台的Qt项目还是折腾了一阵.下面对这段时间的收获做一个总结,也希望帮助看到本文的朋友少走 ...