PCI9054入门1:硬件引脚定义、时序、FPGA端驱动源码
文章目录
- 1:PCI9054的FPGA侧(local侧引脚定义)
- 2:PCI9054的C模式下的读写时序
- 3:FPGA代码部分
- 具体代码:
1:PCI9054的FPGA侧(local侧引脚定义)
而PCI9054的本地总线端的主要管脚信号定义如下表所示。这些管脚是连接到本地逻辑控制电路部分的,并由本地逻辑控制电路部分实现接口时序控制。
本组信号引脚主要用于PCI9054与Local端的连接,主要信号包括LA[31:2]、LD[3 1:0]、LHOLD、LHOLDA、ADS#、LCLK、LBE[3:0]#、LW/R#、READY#、WAIT#、BLAST#等。
| 引脚 | 定义 |
|---|---|
| CCS# | 配置寄存器片选。低电平有效时,选中的是PCI9054的内部寄存器,Local端可以通过此方法配置寄存器。 |
| LCLK: | Local端的时钟输入,是Local端处理器与PCI9054之间的同步信号,如果没有此信号,PCI插卡将不能启动。 |
| LINT# | :本地中断信号。作为输入时可以引起PCI 中断,作为输出时,可以通过改写中断寄存器INTCSR的内容来改变中断状态。 |
| LRESETo#: | Local端复位信号。当PC19054复位(RST#有效)时此信号有效,可以用来复位本地处理器。 |
| LA[31:2]: | 本地地址信号。代表物理地址的高30Bit,突发传输时可以自动增加表明一个连续的数据周期。 |
| LW/R#: | Local端的读写复用信号,低电平为读,高电平为写。 |
| READY#: | 输入/输出准备好信号,表示总线上数据有效或写数据完成,用以连接PCI9054等待状态产生器。 |
| ADS#: | 地址有效信号。表明LA[31:2]上的地址有效以及一个新的总线交易的开始,在第一个时钟周期内有效。 |
| BLAST#: | 突发结束。表明总线访问的最后一次传送,由本地总线主设备驱动。 |
| BTERM#: | 突发中止。用于中止一个突发传输并启动一个新的总线交易。 |
| MODE[1:0]: | 总线工作模式选择。 |
2:PCI9054的C模式下的读写时序
MODE[1:0]都接地为0,设为C模式。
C模式是一种类似于单片机的工作方式。在这种模式下,PCI9054通过片内逻辑控制,将PCI的地址线和数据线分开,很方便的为本地工作时序提供各种工作方式,设计者只要严格控制Local端和PCI端的各种时序控制线,就可以很好的应用PCI9054芯片。C模式下可以进行配置寄存器、主模式、从模式及 DMA模式等操作。
3:FPGA代码部分
通过parameter来定义各个不同状态的参数。每一个状态的位宽为7位,接下来还需要定义两个7位的寄存器,一个用来表示当前状态,另一个用来表示下一个状态,如下所示:
这段Verilog代码是一个PCI Local Bus接口的模块定义。该模块用于连接PCI 9054芯片与其他组件之间的通信,通过一系列输入和输出信号来实现数据的读写和控制。以下是该代码的一些重要部分解释:
参数部分
| 序号 | 代号 | 含义 |
|---|---|---|
| 1 | parameter integer REG_ADDR_WIDTH = 8: | 定义了寄存器地址的位宽,默认为8位 |
| 2 | parameter integer REG_DATA_WIDTH = 32: | 定义了寄存器数据的位宽,默认为32位 |
信号部分
| 序号 | 代号 | 含义 |
|---|---|---|
| 1 | 输入信号 clk | 全局系统时钟 |
| 2 | 输入信号 areset_n | 来自PCI 9054的全局复位信号,低电平有效 |
| 3 | 输入信号 i_hold | 本地总线接口的保持信号 |
| 4 | 输出信号 o_holda | 经过逻辑处理后的保持信号 |
| 5 | 输入信号 ads_n | PCI总线地址有效信号,低电平有效 |
| 6 | 输入信号 blast_n | PCI总线传输结束信号,低电平有效 |
| 7 | 输出信号 o_ready_n: 就绪信号 | 在特定状态下为低电平,表示数据传输准备就绪 |
| 8 | 输入信号 lw_rn | 读写控制信号,高电平表示写操作,低电平表示读操作。 |
| 9 | 输入信号 la | 地址信号 |
| 10 | 输入信号 i_ld | 输入的数据 |
| 11 | 输出信号 ld_oen | 数据输出使能信号 |
| 12 | 输出信号 o_ld | 输出的数据 |
接下来的代码部分描述了一个状态机,用于管理数据传输过程。不同的状态表示不同的传输阶段,如IDLE、TRANSFER、SINGLE_WAIT和SINGLE_END。
代码中使用的触发器和逻辑门用于控制状态转移和输出信号的生成,以实现稳定的数据传输和寄存器读写操作。
这段代码实现了一个复杂的功能模块,将PCI总线和本地总线之间的数据传输和控制进行了逻辑化和管理,从而实现了稳定的数据交换。
具体代码:
//第一段采用同步时序描述状态转移
//-------------------------------------------------------------------------------------------------------------------------------
// IP Lib index : IP Library index
// IP Core Name : Capital name of top entity.
//
// File Name : pci_local_bus.v
// Entity Name : pci_local_bus
// Description : PCI local bus protocol parser for PCI Bridge of PLX9054.
//
// Release Version :
//
// Revision History:
//-------------------------------------------------------------------------------------------------------------------------------
`timescale 1ns / 1psmodule pci_local_bus #(parameter integer REG_ADDR_WIDTH = 8,parameter integer REG_DATA_WIDTH = 32
)(// global system clock, fixed single-ended 40MHzinput wire clk ,// Global Reset from PCI 9054input wire areset_n ,// Local Bus Interfaceinput wire i_hold ,output reg o_holda ,input wire ads_n ,input wire blast_n ,output wire o_ready_n ,input wire lw_rn ,input wire [18:2] la ,input wire [REG_DATA_WIDTH-1:0] i_ld ,output wire ld_oen ,output wire [REG_DATA_WIDTH-1:0] o_ld ,// Register R/W interfaceoutput wire wen ,output wire [REG_ADDR_WIDTH-1:0] waddr ,output wire [REG_DATA_WIDTH-1:0] wdata ,output wire ren ,output wire [REG_ADDR_WIDTH-1:0] raddr ,input wire [REG_DATA_WIDTH-1:0] rdata
);
/*---------------------------------------------------------------------------------------*/
// generate ready state-machine
reg[3:0] current_state, next_state; parameter [3:0] SM_IDLE = 4'b0001;
parameter [3:0] SM_TRANSFER = 4'b0010;
parameter [3:0] SM_SINGLE_WAIT = 4'b0100;
parameter [3:0] SM_SINGLE_END = 4'b1000;// synchronous logic
always@(posedge clk or negedge areset_n)
beginif(~areset_n)current_state <= SM_IDLE;elsecurrent_state <= next_state;
end// combinational logic
always@(*)
case(current_state)SM_IDLE:if(~ads_n)next_state = SM_TRANSFER;elsenext_state = SM_IDLE;SM_TRANSFER:if(~blast_n)next_state = SM_SINGLE_WAIT;elsenext_state = SM_TRANSFER;SM_SINGLE_WAIT:next_state = SM_SINGLE_END;SM_SINGLE_END:if(ads_n && blast_n)next_state = SM_IDLE;else if(~ads_n)next_state = SM_TRANSFER;elsenext_state = SM_SINGLE_END;default:next_state = SM_IDLE;
endcase// output logic
assign o_ready_n = (current_state == SM_SINGLE_WAIT)?1'b0 : 1'b1;/*---------------------------------------------------------------------------------------*/
// asserts acknowledge reponsing to HOLD
always@(posedge clk or negedge areset_n)
if(~areset_n) o_holda <= 0;
else o_holda <= i_hold;
/*---------------------------------------------------------------------------------------*/
// internal register write/read logicassign wen = (~o_ready_n & lw_rn)?1'b1 : 1'b0;
assign waddr = (~o_ready_n & lw_rn)?la[2+REG_ADDR_WIDTH-1:2] : {REG_ADDR_WIDTH{1'b0}};
assign wdata = (~o_ready_n & lw_rn)?i_ld : {REG_DATA_WIDTH{1'b0}};assign ren = (~o_ready_n & ~lw_rn)?1'b1 : 1'b0;
assign raddr = (~o_ready_n & ~lw_rn)?la[2+REG_ADDR_WIDTH-1:2] : {REG_DATA_WIDTH{1'b0}};/*---------------------------------------------------------------------------------------*/
// tri-state control
assign ld_oen = ~ren;
assign o_ld = rdata;endmodule
思久欲知 , 知繁渴思 , 唯圣祂奇 , 毋为所困 思久欲知,知繁渴思,唯圣祂奇,毋为所困 思久欲知,知繁渴思,唯圣祂奇,毋为所困
相关文章:
PCI9054入门1:硬件引脚定义、时序、FPGA端驱动源码
文章目录 1:PCI9054的FPGA侧(local侧引脚定义)2:PCI9054的C模式下的读写时序3:FPGA代码部分具体代码: 1:PCI9054的FPGA侧(local侧引脚定义) 而PCI9054的本地总线端的主要…...
多媒体应用设计师 第17章 多媒体应用场景的技术应用和实现示例
口诀 思维导图 2020...
react151618刷新几次的问题
结论: 16 hooks版本 默认render1次 同步中,无论多少种类还是次数,都render 1次。 异步中,无论多少种类还是次数,1个种类执行1次,多次的话,用n*2。 18 hooks版本 默认render2次, 同步…...
【Spring】IOC容器与Bean的常用属性配置
文章目录 1.前言2.IOC容器2.1 BeanFactory 容器2.2 ApplicationContext 容器 3.Bean的常用属性配置4. 总结 1.前言 在之前的文章-IOC的快速入门中讲过Bean这个概念. 本来就来介绍容器与Bean的常用属性配置 在Spring框架中,Bean指的是被Spring加载生成出来的对象。 …...
2023年下半年 系统集成项目管理工程师 真题考点(一二三四批次)(10月28、29)(网友回忆版)
文章目录 第一批部分考点整体管理采购管理风险管理二:EAC 第二批部分考点如下: 第三批部分考点如下: 第一批 部分考点 1、案例考了关键路径和工期,风险管理、采购、风险、招投标,整体管理。 2、计算题有关键路径和挣…...
读韩都衣舍,谈权力转移的激励制度
这是一个很久之前的商业案例。 在大公司,管理过于复杂,成了现在公司管理的大问题。大公司的流程长,市场的突击速度慢,以及员工的积极性差,成为大公司的一个潜在的弊病。而最近,从韩都衣舍的创始人赵迎光的…...
私有云:【10】VCenter安装win10
私有云:【10】VCenter安装win10 1、ESXI挂载win10镜像2、VCenter安装win102.1、创建虚拟机2.2、启动虚拟机 此WIN10用来作为以后的远程桌面 1、ESXI挂载win10镜像 2、VCenter安装win10 2.1、创建虚拟机 创建虚拟机 设置名称下一步 选择计算机资源 选择NFS存储 设置…...
[Java/力扣100]判断两棵二叉树是否相同
我希望通过这道题,能进一步了解递归思想和“树是递归定义的”这句话 分析 我们的目的是写一个方法来检验两棵树是否相同 什么叫“两棵树相同”?——相同的位置存在相同的结点 有三种情况:1、两棵树一颗为空一颗不为空——不相同ÿ…...
BEC商务英语主题 定价策略|柯桥学商务英语口语
Factors in Pricing Decisions 影响价格制定的因素 A firm cannot determine a product’s price without considering several factors that affect price. 在制定产品价格时,公司如果不考虑影响价格的各种因素是无法制定的。 Managers must take into account t…...
第七章 ObjectScript 一般系统限制
文章目录 第七章 ObjectScript 一般系统限制 字符串长度限制下标限制Global的最大长度 第七章 ObjectScript 一般系统限制 字符串长度限制 字符串的长度有限制:3,641,144 个字符。 重要的是要认识到字符串不仅仅是从输入/输出设备读取的结果。它们可以显示在其他上…...
【Python百练——第1练】使用Python求100以内的所有偶数
作者:Insist-- 个人主页:insist--个人主页 作者简介:梦想从未散场,传奇永不落幕,持续更新优质网络知识、Python知识、Linux知识以及各种小技巧,愿你我共同在CSDN进步 欢迎点赞👍收藏Ὄ…...
springboot心理咨询管理系统
springboot心理咨询管理系统,java心理咨询管理系统,心理咨询管理系统 运行环境: JAVA版本:JDK1.8 IDE类型:IDEA、Eclipse都可运行 数据库类型:MySql(8.x版本都可) 硬件环境…...
Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/134024288 出自【进步*于辰的博客】 因为我发现目前,我对Java-API的学习意识比较薄弱…...
C语言浮点型在内存中的存储
目录 前言: 引言: 浮点数存储规则 举个栗子: TIP: 单精度浮点数存储的模型(float) 双精度浮点数存储的模型(double) IEEE对 M 的特殊规定 IEEE对 E 的特殊规定 小试牛刀 先…...
elementPlus | el-tabs 标签管理路由页面
<script setup> import { useRouter } from vue-router const router useRouter()const tabClick (tab)>{const idx tab.indexif(idx 0){router.push(/)}... } </script> <template><!-- 撑开 stretch"true" --><el-tabs type&quo…...
如何使用ffmpeg制作透明背景的视频
最近我们尝试在网页上叠加数字人讲解的功能,发现如果直接在网页上放一个矩形的数字人视频,效果会很差,首先是会遮挡很多画面的内容,其次就是不管使用任何任务背景,画面都和后面的网页不是很协调,如图所示&a…...
C#中对于using的使用方式
导入命名空间 使用list需要导入 System.Collections.Generic;这个命名空间 using System.Collections.Generic; using UnityEngine;public class UsingTest : MonoBehaviour {void Start(){List<int> intlist new List<int>();} }省略类名 using UnityEngine; …...
【Java】HashMap集合
Map集合概述和使用 Map集合概述 Interface Map<k,v> k:键值类型 v:值的类型 Map集合的特点 键值对 映射关系 Key 和 Value一个键(Key)对应一个值(Value)键不允许重复,值可以重复如…...
百度网盘使用指南
文章目录 备份篇手机文件备份电脑文件备份 查找篇移动端PC端 文件操作文件解压文件扫描PDF工具图片工具音频操作 备份篇 手机文件备份 在百度网盘APP种点击 我的–设置–自动备份设置 里边有相册备份, 文档备份, 微信文件备份, 手机通讯录, 短信, 通话备份等功能 电脑文件备…...
CSS 滚动驱动动画与 @keyframes 新语法
CSS 滚动驱动动画与 keyframes 在 CSS 滚动驱动动画相关的属性出来之后, keyframes 也迎来变化. 以前, keyframes 的值可以是 from, to, 或者百分数. 现在它多了一种属性的值 <timeline-range-name> <percentage> 建议先了解 animation-range 不然你会对 timeli…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
