明德扬FPGA模块划分方法1(转)

模块划分概述

模块划分,顾名思义是指模块的划分。但是,明德扬提出的模块划分,是广义的“模块划分”。后续所提及的“模块划分”,不单单指模块的划分,还包括模块划分好后,模块的端口及模块之间数据流向的确定。

5.1.1 模块划分原则
明德扬的模块划分原则有两条:
原则一:一个功能一个模块。
按功能划分模块是模块划分最基本的指导思想,当我们拿到一个项目后,最直接的想法就是先确定项目需要多少小功能为之服务,然后把一个个功能实现,最后通过顶层模块的例化,完成项目要求。
原则二:相同架构一个模块。
这里的相同架构不是单单是指模块整体为计数器架构、状态机架构或FIFO架构,还要求在架构内部相同或相似。比如:计数器架构中计数器的个数或计数规律相同或高度相似;状态机架构中状态的划分或跳转条件相同或高度相似。

5.1.2 模块划分端口规范
在确定模块划分后,需要明确模块的端口,及模块与模块之间的数据交互。明德扬在实际项目经验总结得到的一般模块端口信号规范。读者在完成项目模块划分后,确定端口及数据流向时参考使用。

表5.1 端口信号规范


信号


说明


clk


模块工作时钟


rst_n


系统复位信号,低电平有效


en


en有两种用法:

1.使能命令信号,类似于vld,当其为1时表示一个命令有效;

2. 使能状态指示,当其为1时表示处于使能状态。


vld


数据有效标志指示信号,表示当前的data数据有效。注意,vld不仅指示了数据有效,而且还指示了有效的次数。时钟收到多少个vld=1,就表示有多少个数据有效


data


数据总线。输入一般名称为din,输出一般名称为dout。类似的信号还有addr,len等


err


整个包文错误指示,在eop=1且vld=1有效时才有效


sop


包文起始指示信号,用于表示有效包文数据的第一个比特,当vld=1时此信号有效


eop


包文结束指示信号,用于表示有效包文数据的最后一个比特,当vld=1时此信号有效


rdy


模块准备好信号,用于模块之间控制数据发送速度

例如模块A发数据给模块B,则

rdy信号由模块B产生,连到模块A(即对于B是输出信号,对于A是输入信号);

B要保证rdy产生正确,即此信号为1时,B一定能接收数据;

A要保证仅在rdy=1时才发送数据。

原文地址:https://www.cnblogs.com/zhazhaxiang/p/10892569.html

时间: 2024-12-24 13:27:39

明德扬FPGA模块划分方法1(转)的相关文章

模块划分方法

一.模块划分概述 模块划分,顾名思义是指模块的划分.但是,明德扬提出的模块划分,是广义的"模块划分".后续所提及的"模块划分",不单单指模块的划分,还包括模块划分好后,模块的端口及模块之间数据流向的确定. 二.模块划分原则 明德扬的模块划分原则有两条: 原则一:一个功能一个模块. 按功能划分模块是模块划分最基本的指导思想,当我们拿到一个项目后,最直接的想法就是先确定项目需要多少小功能为之服务,然后把一个个功能实现,最后通过顶层模块的例化,完成项目要求. 原则二:相同

模块划分常用架构

总结出来五个常用的模块交互架构,读者在进行项目设计时,可结合明德扬模块划分原则,参照"模块划分常用架构"进行模块划分. §6.1 直接交互架构 直接交互不需要模块B反馈,模块A直接发送数据.一般应用于下游模块处理速率高于上游模块发送速率的场景.框图如图6-1. 图6-1 直接交互架构 直接交互架构的典型应用是4.2.1项目一:包文汇聚模块.其系统框图见图6-2. 图6-2 包文汇聚模块模块划分框图 在此项目中,网口A,B,C作为上游模块其工作时钟分别是40MHz.20MHz.10MHz

angularJs项目实战!01:模块划分和目录组织

近日来我有幸主导了一个典型的web app开发.该项目从产品层次来说是个典型的CRUD应用,故而我毫不犹豫地采用了grunt + boilerplate + angularjs + bootstrap + D3 + requirejs 的架构来实现它.angularjs早在去年6月份我就有所接触,将它应用在实验室项目的个别页面中,11月份在新浪的时候也将其推荐给了所在云事业部项目组.项目组老大程辉等人都是很有技术敏感性的人,大胆地采纳了我的建议,将之应用于原本使用dojo开发的项目前端模块上.然

按照模块划分进行分工

上次按照模块划分所设计的UML图如下. 经小组讨论,我们可以按照模块进行开发,最后再将这些模块进行组合.具体分工如下: 解安琪和潘雨婷: 负责查找地铁线路表和价格.包括站名和站与站之间的里程,里程的计算方法. 张博闻: 将线路表和价格的数据,整理成可移植的数组形式,并实现各自的方法封装成一个模块. 汪梦萱和张郁竹: 负责路程规划模块,在没整合上线路模块和价格模块前,主要实现计算最短里程的方法(拓展:最少倒站的乘车方案). 王宜鸣: 利用QT,制作软件的UI界面.包括实现与路程规划和价格计算的接口

Android 设计随便说说之简单实践(模块划分)

上篇随笔随(Android 设计随便说说)便说了一下什么是设计以及设计的原则,这里举一个简单的例子来进一步的说Android设计.我们以应用商店的设计来举例. 在设计之前,需要把握两部分内容,才能使得设计更加的合理,恰当. 第一部分是应用本身包含的业务都有哪些.应用商店的业务大体上有一下几个: 1 给用户展示apk信息 2 提供用户下载apk 当然了已上还可以继续细分.但是对于我们的例子来说已经足够了. 第二部分本地sdk,也就是手机能够提供哪些接口.对于上面的分析我们需要了解一下API. 第一

NGINX编译安装后添加新模块的方法

刚忙完研发又有新的需求过来,测试服务器的nginx需要有HttpUpstreamRequestHashModule和HttpStubStatusModule:擦!安装软件环境时怎么不说清楚:妹的,悲剧. 测试服务器崩溃的是不是我安装的软件,天啊.赶紧搞吧!!! 环境:centos 6.4 64位 编译安装nginx 1:查看nginx版本和安装时间带的具体参数  /usr/local/nginx/sbin/nginx  -V 2:下载相应的版本的nginx源码包[nginx-1.5.11.tar

紫外线胶筑坝封装智能卡用cpu模块的方法

本发明提供了一种UV胶筑坝封装智能卡用CPU模块方法,在贴片.焊线后的载带上,用UV胶在每个器件的周围涂一圈,然后再用UV胶将坝内的芯片.金丝及其空隙填没掩盖叫填料,经过UV灯照射,固化成型并经过质量检测,实现电路封装.运用本发明方法封装的CPU模块,相比较无筑坝的封装,提高了合格率,用该模块制成的卡能承受比较高的压力和扭弯力,能更好地保护芯片.金丝,进而提高了CPU模块的可靠性. 1.一种UV胶筑坝封装智能卡用CPU模块的方法,其特征在于,所述方法包括如下步骤: a.筑坝:根据不同条带的cav

Ionic2实战——按模块划分app 创建多module

http://www.jianshu.com/p/d94324b722af 背景 用ionic2开发过一两个小功能的朋友都会发现,每新建一个页面都需要在\src\app\app.module.ts中添加页面对应的class 当app页面很多时都会感觉比较乱,分不清哪跟哪.更让人接受不了的是当多人同时开发,经常修改app.module.ts,会经常造成代码冲突 所以我们需要把页面按模块再细分 代码结构 我的app按功能分了4个子模块,分别为contact.home.login和mine.具体代码结

python在不同层级目录import模块的方法

使用python进行程序编写时,经常会使用第三方模块包.这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入.不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用:为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用.本篇就针对常见的模块调用方法汇总下. 一.同级目录下的调有 程序结构如下: -- src    |-- mod1.py