0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MAX.II的UFM模块使用实例

工程师 来源:网络整理 作者:h1654155205.5246 2019-03-06 18:20 次阅读

查看MAX II器件的Chip Planner:

其左下角这块黑色区域是用户不可用资源区,而在这片不可用区域里有一块绿色的方块是可用的。这块不可用的黑色区域叫做CFM block(配置Flash存储区),而那个绿色方块叫做UFM(用户可用的Flash存储区)。对于后者是我们今天讨论的重点,先看以下官方对此存储区作用的描述:

MAX II devices feature a single UFM block, which can be used like a serial EEPROM for storing non-volatile information up to 8,192 bits. The UFM block connects to the logic array through the MultiTrack interconnect,allowing any LE to interface to the UFM block. Figure 2–15 shows the UFM block and interface signals. The logic array is used to create customer interface or protocol logic to interface the UFM block data outside of the device. The UFM block offers the following features:

■ Non-volatile storage up to 16-bit wide and 8,192 total bits

■ Two sectors for partitioned sector erase

■ Built-in internal oscillator that optionally drives logic array

■ Program, erase, and busy signals

■ Auto-increment addressing

■ Serial interface to logic array with programmable interface

MAX.II的UFM模块使用实例

也就是说,MAX II其实是内嵌了一块8Kbit的Flash。这个Flash原则上是不占用MAX II的其它可用逻辑资源的,不过这有个大前提:用户读写这块存储区使用altera本身的串行接口(遵循特定的通信协议)。但是这个协议也太繁琐了(个人感觉),因此,对于这块存储区读写接口altera提供了三种通用的接口供用户选择。

I2C

■ SPI

■ Parallel

■ None (Altera Serial Interface)

最后一种就是不需要占用器件额外逻辑资源的接口,上面三种是需要消耗器件逻辑资源的接口。笔者添加了一个并行接口做测试,占用了EMP240内部86个LEs,对于资源比较紧张的应用还是很划不来的。

更多详细的关于UFM的信息请大家参考altera提供的MAX II datasheet。下面介绍一个使用并行接口读写UFM的实例,以及功能仿真

新建一个工程,名为ufmtest,顶层模块ufmtest.v,代码如下:

module ufmtest(

databus,addr,

nerase,nread,nwrite,

data_valid,nbusy

);

inout[15:0] databus; //Flash数据总线

input[8:0] addr; //Flash地址总线

input nerase; //擦除Flash某一扇区信号

input nread; //读Flash信号

input nwrite; //写Flash信号

output data_valid; //Flash数据输出有效信号

output nbusy; //Flash忙信号

assign databus = nwrite ? dataout:16‘hzzzz; //写信号有效时,Flash数据总线作为输入

assign datain = databus; //写入Flash数据总线连接

wire[15:0] datain; //Flash写入数据

wire[15:0] dataout; //Flash读出数据

//例化UFM(Flash)模块

para_ufm para_ufm_inst (

.addr ( addr ),

.datain ( datain ),

.nerase ( nerase),

.nread ( nread ),

.nwrite ( nwrite),

.data_valid ( data_valid ),

.dataout ( dataout ),

.nbusy ( nbusy )

);

endmodule

但是在例化UFM模块之前,大家需要先在MegaWizard Plug-In Manager里添加一个Flash模块。步骤如下:

1,点击菜单栏里的ToolsàMegaWizard Plug-In Manager。弹出如下,点击next。

MAX.II的UFM模块使用实例

2,接着选择Memory Compiler下的Flash Memory,然后在What name do you want for the output file?下路径的最后添加输出文件名为para_ufm,点击next.

MAX.II的UFM模块使用实例

3,接下来一路Next,需要更改设置的地方如下(我也不多废话,大家一看都明白):

MAX.II的UFM模块使用实例

MAX.II的UFM模块使用实例

完成上面步骤以后编译工程,编写testbench如下:

`timescale 1ns/1ns

module tb_ufmtest();

//inout

wire[15:0] databus; //Flash数据总线

//input

wire data_valid; //Flash数据输出有效信号

wire nbusy; //Flash忙信号

//output

reg[8:0] addr; //Flash地址总线

reg nerase; //擦除Flash某一扇区信号

reg nread; //读Flash信号

reg nwrite; //写Flash信号

reg[15:0] databus_r; //测试模块数据总线寄存器

reg[15:0] rdback_data; //测试模块数据总线数据回读寄存器

assign databus = nwrite ? 16’hzzzz:databus_r;

ufmtest ufmtest(

.databus(databus),

.addr(addr),

.nerase(nerase),

.nread(nread),

.nwrite(nwrite),

.data_valid(data_valid),

.nbusy(nbusy)

);

parameter DELAY_600US = 600_000, //600us延时

DELAY_2US = 2_000, //2us延时

DELAY_5US = 5_000; //5us延时

initial begin

nerase = 1;

nread = 1;

nwrite = 1;

addr = 0;

databus_r = 0;

#DELAY_600US; //0地址写入数据99

databus_r = 99;

addr = 9‘d0;

nwrite = 0;

#DELAY_5US;

nwrite = 1;

@ (posedge nbusy);

#DELAY_5US; //0地址读出数据,保存到寄存器rdback_data中

databus_r = 16’hff;

addr = 9‘d0;

nread = 0;

#DELAY_5US;

nread = 1;

@ (posedge data_valid);

rdback_data = databus;

#DELAY_600US;

$stop;

end

endmodule

仿真波形如下:

MAX.II的UFM模块使用实例

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2693

    浏览量

    47426
收藏 人收藏

    评论

    相关推荐

    BOOSTXL-EDUMKII教育BoosterPack插件模块Mark II用户指南

    电子发烧友网站提供《BOOSTXL-EDUMKII教育BoosterPack插件模块Mark II用户指南.pdf》资料免费下载
    发表于 12-05 14:39 0次下载
    BOOSTXL-EDUMKII教育BoosterPack插件<b class='flag-5'>模块</b>Mark <b class='flag-5'>II</b>用户指南

    详解MySQL多实例部署

    详解MySQL多实例部署
    的头像 发表于 11-11 11:10 217次阅读

    LORA模块在农业中的应用实例

    随着物联网技术的发展,LORA(Long Range,长距离无线通信技术)模块因其低功耗、远距离传输等优势,在农业领域得到了广泛应用。 1. 智能灌溉系统 应用背景: 农业灌溉是农业生产中的重要环节
    的头像 发表于 11-01 09:25 651次阅读

    在Keystone II器件上使用Arm ROM引导加载程序

    电子发烧友网站提供《在Keystone II器件上使用Arm ROM引导加载程序.pdf》资料免费下载
    发表于 09-19 12:33 0次下载
    在Keystone <b class='flag-5'>II</b>器件上使用Arm ROM引导加载程序

    广成科技USBCAN-II C+型CAN盒是什么

    USBCAN-II C+是沈阳广成科技有限公司出品的一种集成2个CAN通道的CAN盒工具,你也可以叫它CAN卡、CAN分析仪、USBCAN分析仪。相对于前身USBCAN-II C分析仪,USBCAN-II C+的外壳由金属转变为
    的头像 发表于 08-30 11:47 638次阅读

    广成科技USBCAN II C+可用的GCANtools功能

    USBCAN II C+是沈阳广成科技有限公司出品的一种双通道CAN分析仪工具,其搭配的软件主要广成科技自己家的GCANTOOLS以及其他厂家的CANPro、CANTEST。相比于USBCAN II
    的头像 发表于 08-30 11:45 597次阅读

    MAX30102模块在F407VET6的板子上不能用的原因?

    MAX30102模块在F407VET6的板子上不能用
    发表于 05-31 07:24

    鸿蒙开发接口Ability框架:【@ohos.wantAgent (WantAgent模块)】

    WantAgent模块提供了触发、取消、比较WantAgent实例和获取bundle名称的能力,包括创建WantAgent实例、获取实例的用户ID、获取want信息等。
    的头像 发表于 05-13 17:35 852次阅读
    鸿蒙开发接口Ability框架:【@ohos.wantAgent (WantAgent<b class='flag-5'>模块</b>)】

    哪吒汽车携畅销车型NETA V-II惊艳亮相曼谷国际车展

    哪吒汽车携畅销车型NETA V-II惊艳亮相曼谷国际车展
    的头像 发表于 03-28 10:11 395次阅读
    哪吒汽车携畅销车型NETA V-<b class='flag-5'>II</b>惊艳亮相曼谷国际车展

    max6675测温不准的原因?如何解决?

    */void MAX6675_Init(void){GPIO_Init();//片选引脚初始化MX_SPI2_Init();//spi总线初始化} /** @briefmax6675模块读写一个字
    发表于 03-18 07:51

    max2121射频芯片配置问题

    有没有max2121射频芯片寄存器配置实例啊,为什么我配置完测试不到信号
    发表于 03-07 17:44

    verilog的135个经典实例

    verilog的135个经典实例
    发表于 02-02 10:17 14次下载

    二级电源和II级电源的区别

    二级电源和II级电源的区别 随着电力需求的不断增长,人们对电源的要求也越来越高。二级电源和II级电源是两种常见的电源等级,它们在一些关键的技术规范上存在一些区别。 首先,我们来了解一下二级电源和II
    的头像 发表于 01-19 13:51 2060次阅读

    单片机编程实例介绍

    单片机(Microcontroller)是指内部集成了处理器核心、存储器、输入输出接口和外围设备接口等功能模块的集成电路芯片。它具有体积小、功耗低、性能高等优点,被广泛应用于嵌入式系统中。单片机编程
    的头像 发表于 01-16 09:37 2606次阅读

    电源模块和伺服模块维修实例

    一堆坏了的AXV300系统模块(2个电源模块SM24080-BX、2个伺服模块21020、2个伺服模块10413、另外1个ADV200、1个XVY)
    的头像 发表于 01-04 11:02 1075次阅读
    电源<b class='flag-5'>模块</b>和伺服<b class='flag-5'>模块</b>维修<b class='flag-5'>实例</b>