VL812 USB 3.0 Hub 控制器数据手册:功能与规格

需积分: 10 3 下载量 135 浏览量 更新于2024-07-16 收藏 938KB PDF 举报
本文档是关于VIA Labs公司生产的VL812 USB 3.0 Hub Controller的数据手册,发布日期为2012年4月24日,版本号为0.86。VL812是一款专为USB 3.0接口设计的扩展芯片,它支持1个主控制器和4个下游端口,旨在提供高速、高效的数据传输。该控制器集成了USB 3.0和USB 2.0接口,并包含一个模拟命令块,用于控制设备的行为和配置。 文档详细介绍了以下知识点: 1. **产品概述**:VL812系统架构图展示了其内部组件,包括USB 3.0和USB 2.0接口的集成,以及与外部设备的连接方式。 2. **引脚布局**:文档提供了引脚列表和描述,这对于硬件工程师理解如何将VL812连接到电路板上至关重要。每个引脚的功能,如电源输入、数据通信线、时钟信号等都有详细的说明。 3. **信号类型定义**:为了确保正确操作,文档解释了各种信号类型的含义,包括时钟信号、数据线、控制信号等。 4. **USB接口规范**:包含了关于USB 3.0和USB 2.0协议的实现细节,包括数据传输速率、电源管理、以及设备如何与主机进行交互。 5. **模拟命令块**:通过这个块,用户可以发送指令来控制子设备,比如设置工作模式、唤醒或休眠等。 6. **侧带信号和辅助功能**:文档可能还涉及到了一些非标准的信号,如用于错误检测和报告的辅助功能。 7. **测试引脚**:为了方便测试,手册可能列举了用于自测或调试的特定引脚及其功能。 8. **电气规格**:包括电压范围、电流消耗、功耗模式等参数,帮助设计师了解芯片在实际应用中的性能表现。 9. **SPI闪存的定时要求**:如果VL812支持闪存存储,那么这里有相关的编程和读取时间规格。 10. **重新流焊工艺指南**:为了确保组件的可靠焊接,文档提供了组装和焊接过程中的温度和时间推荐。 11. **包装和机械规格**:包括封装尺寸、材料、以及标记信息,这对于PCB设计者选择合适的封装至关重要。 12. **顶部标记**:可能指的是封装顶部的标识或型号信息,有助于识别和区分不同版本的VL812。 这份数据手册对于任何从事USB 3.0 Hub设计、嵌入式系统开发或相关技术应用的工程师来说,都是不可或缺的参考资料,可以帮助他们理解和利用VL812的全部功能。

Value* ApplyOneValue(int flag = 1)//flag:0代表在hashmap外部申请,1代表在hashmap内部申请 { Value *vl = NULL; if (node_list_head_) { if (value_status_.free_num_ > 1) { ValueNode* tmp = node_list_head_ ; node_list_head_ = node_list_head_->next_node_; tmp->next_node_ = NULL; value_status_.free_num_--; tmp->value_.use_count_ = flag; vl = &(tmp->value_); //return &(tmp->value_); } else { ValueNode* tmp_node = new ValueNode[kDefaultAddSize]; ValueNode* cur_node = tmp_node; if (!tmp_node) { return NULL; } vec_memptr_.push_back(tmp_node); for (uint32_t i = 1; i< kDefaultAddSize; i++) { cur_node->value_.node_ptr_ = (void*)cur_node; cur_node->next_node_ = tmp_node + i; cur_node = cur_node->next_node_; } value_status_.free_num_ += kDefaultAddSize; value_status_.total_size_ += kDefaultAddSize; node_list_head_->next_node_ = tmp_node; node_list_tail_ = cur_node; node_list_tail_->next_node_ = NULL; node_list_tail_->value_.node_ptr_ = (void*)node_list_tail_; ValueNode* tmp = node_list_head_ ; node_list_head_ = node_list_head_->next_node_; tmp->next_node_ = NULL; value_status_.free_num_--; tmp->value_.use_count_ = flag; vl = &(tmp->value_); //return &(tmp->value_); } } if(NULL != vl) { //reverse start; if(rphead && ::is_open_reverse) { rphead->CdrRaw.ncdrid = cdrgetid(rphead->lcoreid); //创建父cdrid; rphead->CdrRaw.tstart.tm_cycles = rphead->tstart.tm_cycles; rphead->CdrRaw.cdrstat = PACKET_BEGIN; rphead->btCurStaus = PACKET_BEGIN; pubSendPkt((void*)rphead); //存储父cdr信息; vl->SetReverse(rphead->CdrRaw.ncdrid, rphead->CdrRaw.tstart.tm_cycles); } //返回; return vl; } return NULL; }代码意思

2023-06-08 上传