T1042D4RDB RevA Schematic: Detailed Block Diagram and Interfaces

需积分: 16 3 下载量 165 浏览量 更新于2024-07-14 收藏 475KB PDF 举报
T1042D4RDB_revA_SCH是一份详细的设计图纸,包含了T1042型号的系统架构和接口设计。这份文档的核心内容分为以下几个部分: 1. 版本控制:文档初始版本为V0.1,发布日期为2014年10月,标志着该设计的初次发布。版本控制强调了信息可能会随时间更新,可能存在变动。 2. 页描述:文档开始是页描述,接着是电路图目录,列出了各个部分在图纸上的位置和编号,便于读者快速定位。 3. 系统框图:展示了整个系统的整体结构,可能包括关键组件和模块之间的连接关系,有助于理解系统的功能布局。 4. 机械设计:这部分可能包含硬件的尺寸、外形、安装要求等信息,确保产品的物理实现与电气设计协调一致。 5. 内存接口:如T104XDDR4MEMORYINTERFACE,表明该设计支持DDR4内存,可能是系统的一个重要组成部分,负责数据的高速存储和传输。 6. 接口模块:包括T104XIFCINTERFACE、NOR/NAND FLASH接口、SPI Flash和SDHC接口等,展示出系统与其他外部设备的通信方式。 7. 系统逻辑接口:涉及处理器和其他核心部件间的交互,确保数据处理和控制流程的执行。 8. 网络接口:如T104XETHERNETandSERDESINTERFACE,可能涉及千兆以太网接口和串行通信接口,用于高速数据传输。 9. USB接口:确保系统兼容USB设备的连接,提供便捷的数据交换和电源供应。 10. 多路复用/解复用模块:T104XQE-TDM/DIUMUX/DEMUX,用于整合多个信号通道,提高信号处理效率。 11. 电源管理:包括T104XPOWERSUPPLY、PLL滤波器和接地设计,确保系统的稳定运行和电磁兼容性。 12. 串行通信接口:如UART和I2C,提供低速数据传输的通用接口。 13. RGMII和SGMII以太网端口:分别代表不同的高速以太网物理层接口标准。 14. PCIe、Mini PCIe和SATA接口:可能支持外设扩展或数据传输,增强系统的扩展性和兼容性。 15. CPLD:复杂可编程逻辑器件,可能用于实现特定的逻辑功能或配置。 16. 核心和系统电源转换器:确保不同模块所需的电压供应。 17. 电源开关、时钟发生器和多路切换:管理电源输入和信号路由,保持系统性能和稳定性。 18. 变更列表:记录了设计过程中的更改,提醒用户可能存在的更新或改动。 19. 版权和免责声明:所有信息未经通知可能会有所变化,不保证信息的准确性,且无任何类型的保修声明。 T1042D4RDB_revA_SCH是一份详尽的电子系统设计图纸,涵盖了从系统架构到接口细节的多个层面,为开发、测试和维护该产品提供了关键的技术参考。

#pragma once #include "viRDBIcd.h" //激励信号 typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrytigger; RDB_TRIGGER_t rdbtrigger; RDB_MSG_ENTRY_HDR_t entryEOF; } USER_RDB_MSG_TRIGGER_t; //主车状态 typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrySOF; //Trigger RDB_MSG_ENTRY_HDR_t entrytigger; RDB_TRIGGER_t rdbtrigger; //Ego RDB_MSG_ENTRY_HDR_t entryObjectState; RDB_OBJECT_STATE_t objectState; RDB_MSG_ENTRY_HDR_t entryWheelState; RDB_WHEEL_t WheelState_FL; RDB_WHEEL_t WheelState_FR; RDB_WHEEL_t WheelState_RR; RDB_WHEEL_t WheelState_RL; RDB_MSG_ENTRY_HDR_t entryEOF; } USER_RDB_MSG_Trigger_EGO_t; //ego control typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrySOF; //Trigger RDB_MSG_ENTRY_HDR_t entrytigger; RDB_TRIGGER_t rdbtrigger; //Ego RDB_MSG_ENTRY_HDR_t entryObjectState; RDB_OBJECT_STATE_t objectState; RDB_MSG_ENTRY_HDR_t entryWheelState; RDB_WHEEL_t WheelState_FL; RDB_WHEEL_t WheelState_FR; RDB_WHEEL_t WheelState_RR; RDB_WHEEL_t WheelState_RL; //Driver RDB_MSG_ENTRY_HDR_t entryDriverCtl; RDB_DRIVER_CTRL_t driver; RDB_MSG_ENTRY_HDR_t entryEOF; } USER_RDB_MSG_Trigger_EGO_Ctl_t; //Trigger and 主车状态 typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrySOF; //Ego RDB_MSG_ENTRY_HDR_t entryObjectState; RDB_OBJECT_STATE_t objectState; RDB_MSG_ENTRY_HDR_t entryWheelState; RDB_WHEEL_t WheelState_FL; RDB_WHEEL_t WheelState_FR; RDB_WHEEL_t WheelState_RR; RDB_WHEEL_t WheelState_RL; RDB_MSG_ENTRY_HDR_t entryEOF; } USER_RDB_MSG_EGO_t; //接地点查询 typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrySOF; RDB_MSG_ENTRY_HDR_t entryRoadQuery; RDB_ROAD_QUERY_t Road_Query_1; RDB_ROAD_QUERY_t Road_Query_2; RDB_ROAD_QUERY_t Road_Query_3; RDB_ROAD_QUERY_t Road_Query_4; RDB_MSG_ENTRY_HDR_t entryEOF; } USER_RDB_MSG_ROADQUERY_t; //激励信号 typedef struct { RDB_MSG_HDR_t hdr; RDB_MSG_ENTRY_HDR_t entrySCP; RDB_SCP_t scpHeader; } USER_SCP_MSG_t;

2023-07-15 上传

void sendDriverCtrl( int & sendSocket, const double & simTime, const unsigned int & simFrame ) { Framework::RDBHandler myHandler; myHandler.initMsg(); RDB_DRIVER_CTRL_t *myDriver = ( RDB_DRIVER_CTRL_t* ) myHandler.addPackage( simTime, simFrame, RDB_PKG_ID_DRIVER_CTRL ); if ( !myDriver ) return; // do we have a valid nearest object? bool haveSensorObject = ( mNearestObject.base.id > 0 ); // sensor object must not be older than 1.0s double ownSpeed = sqrt( mOwnObject.ext.speed.x * mOwnObject.ext.speed.x + mOwnObject.ext.speed.y * mOwnObject.ext.speed.y ); double accelTgtDist = 0.0; double accelTgtSpeed = ( 30.0 - ownSpeed ) / 5.0; // default speed should be own preferred speed if ( haveSensorObject ) { // let's go for the same speed as preceding vehicle: if ( mNearestObject.ext.speed.x < -1.0e-3 ) accelTgtSpeed = 2.0 * mNearestObject.ext.speed.x / 5.0; else accelTgtSpeed = 0.0; // let's go for a 2s distance double tgtDist = ownSpeed * 2.0; if ( tgtDist < 10.0 ) // minimum distance to keep tgtDist = 10.0; accelTgtDist = ( mNearestObject.base.pos.x - tgtDist ) / 10.0; } fprintf( stderr, "sendDriverCtrl: accelDist = %.5lf, accelSpeed = %.5lf\n", accelTgtDist, accelTgtSpeed ); myDriver->playerId = 1; myDriver->accelTgt = accelTgtDist + accelTgtSpeed; myDriver->validityFlags = RDB_DRIVER_INPUT_VALIDITY_TGT_ACCEL | RDB_DRIVER_INPUT_VALIDITY_ADD_ON; int retVal = send( sendSocket, ( const char* ) ( myHandler.getMsg() ), myHandler.getMsgTotalSize(), 0 ); if ( !retVal ) fprintf( stderr, "sendDriverCtrl: could not send driver control\n" ); else fprintf( stderr, "sentDriverCtrl\n" ); }

2023-07-15 上传