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…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
使用ch340继电器完成随机断电测试
前言 如图所示是市面上常见的OTA压测继电器,通过ch340串口模块完成对继电器的分路控制,这里我编写了一个脚本方便对4路继电器的控制,可以设置开启时间,关闭时间,复位等功能 软件界面 在设备管理器查看串口号后&…...
