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 ...
随机推荐
- 多队列网卡-虚拟机Linux系统设置
多队列网卡配置 作者使用的是ubuntu 20.04,VMWARE 首先查看系统上的网卡 ip a # 查看网卡信息 查看ens33是否支持多队列网卡,如果是下图这种情况就是不支持多队列网卡. cat ...
- uni-app之camera组件-人脸拍摄
小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...
- Go 必知必会:探索 Go 语言中的数组和切片深入理解顺序集合
文末有面经共享群 在 Go 语言的丰富数据类型中,数组和切片是处理有序数据集合的强大工具,它们允许开发者以连续的内存块来存储和管理相同类型的多个元素.无论是在处理大量数据时的性能优化,还是在实现算法时 ...
- in notin exists not exists 性能优化算法总结
in notin exists not exists 性能优化算法总结 1.1. in 和 exists 区别 1.2. not in 能不能走索引 1.3. not in 和 join 的关系 1. ...
- C++ | 每一个C++程序员都应该知道的RAII
导读:RAII是C++中一种管理资源.避免资源泄漏的惯用法,利用栈的特点来实现.本文较为详细介绍了RAII的原理.使用方法和优点,并且通过实例讲解了RAII在C++ STL中的应用,如智能指针和互斥锁 ...
- A4纸尺寸
A4纸尺寸 A4纸尺寸:210×297: A3纸尺寸:297×420: A2纸尺寸:420×594: A1纸尺寸:594×841: A0纸尺寸:841×1189: 备注:长(mm)×宽(mm) 单位: ...
- ASP.NET Core – Partial View
前言 之前写过一篇 ASP.NET Core – View Component 里面有提到, View Component 是 Partial View 的加强版. 多了一个 .cs 可以写逻辑. 那 ...
- ASP.NET Core – Handle Error on Razor Page
前言 网站不应该有 error, 但它却必然会发生的, 所以给用户一个友好的 error 页面是很重要的. 主要参考 Handle errors in ASP.NET Core Development ...
- Vue3.5中解构props,让父子组件通信更加丝滑
前言 在Vue3.5版本中响应式 Props 解构终于正式转正了,这个功能之前一直是试验性的.这篇文章来带你搞清楚,一个String类型的props经过解构后明明应该是一个常量了,为什么还没丢失响应式 ...
- SqlEs-像使用数据库一样使用Elasticsearch
SqlEs SqlEs是Elasticsearch的客户端JDBC驱动程序,支持采用sql语法操作Elasticsearch.SqlEs构建在RestHighLevelClient,屏蔽了RestHi ...