tag 标签: 博客大赛

相关博文
  • 热度 4
    2021-6-22 14:12
    12962 次阅读|
    2 个评论
    基于Xilinx FPGA的PCIE接口硬件设计
    最近一个项目中,需要在xilinx v7690t的FPGA高速接口上挂载PCIEx8接口,基于此项目,和大家分享一下在xiinx FPGA上如何挂载PCIE接口。 首先,要在FPGA上挂载PCIE接口,必须明确的是挂载在GTH或GTX高速Bank上。而对于690t-fgg1927器件,有20个高速bank,分别为bank110-bak119和bank210-bank219,那么我们在硬件设计中,PCIE接口该接到哪个bank呢? 本项目中,我们需要的是PCIEx8接口,也就是说需要8通道高速收发器,而690t的每个高速bank只有4通道收发器,所以需要2个bank来实现。在硬件设计中,那么该接哪两个高速bank呢?不妨先从逻辑着手,打开vivado软件,搜索PCIE IP核,出现如下几个选项,我用的vivado软件版本为2018.2。 我们选择最后一个ip,双击之后显示界面如下。 在该界面中,对于硬件设计而言,我们只关注两部分,分别是Lane Width和PCIe Block Locatin这两个参数,第一个参数为PCIe的通道数,也就是实际的PCIe x1,x2,x4,x8。第二个参数就是我们的PCIe高速接口在FPGA高速bank上的连接位置,该参数有三个选项,分别为X0Y0,X0Y1,X0Y2。每个选项对应着不同的单个或相邻的bank。以下是我分别选择三个选项,vivado自己生成的xdc文件。 X0Y0: X0Y1: X0Y2: 我们从上图中可以看出,无论我们选择三个选项中的哪一个,在xdc文件中,体现的只有X1Y4之类的约束,并没有像我们之前编写逻辑时约束的具体管脚号。那么我们怎么去查X1Y4这类约束对应的bank呢?这个时候我们需要去xilinx的官网查找GTX/GTH手册了。 在xilinx官网有一个ug476手册,在该手册中详细的描述了每一个location。 由于本次项目中使用的是v7690t-ffg1927器件,所以在ug476手册的416页到425页可以查到具体对应的bank。 例如之前生成的xdc文件中的X1Y4,对应的是bank111的AW2,AW1,AV8,AV7四个引脚。所以我们在IP配置界面选择PCIEx8选项,X0Y0时,此时8通道高速收发器对应的是bank111-bank112; 选择PCIEx8选项 ,X 0Y 1时,此时8通道高速收发器 对 应 的是 bank114-bank115; 选择PCIEx8选项 ,X 0Y 2时,此时8通道高速收发器 对 应 的是 bank117-bank118。 通过以上查找分析,我们确定了当使用PCIEx8高速接口时,具体应该连接到了那两个bank,那么8通道差分收发器在这两个bank上怎么连接呢?例如我们选择了bank111-bank112,lan0-lan7是从bank111的MGTHT/RXP/N0开始到 bank 112的 MGTHT/ RXP/N 3正向连接呢还是逆向呢?其实从前面生成的xdc文件我们可以看出,选择X0Y0时,对应的bank为bank111-bank112。 我们可以看出Lane0对应的是X1Y11,也就是bank112的 MGTHT/ RXP/N 3 差分对儿,而Lane7对应的是X1Y4,也就是bank111的 MGTHT/ RXP/N 0 CH差分对儿。所以在官方推荐中,是逆序引脚连接,也就是PCIE_T/RXD_0_P/N连接至 bank 112的 MGTHT/ RXP/N 3 ,依次递减, P CIE _T/R XD_7 _P / N 连接至 bank 111的 MGTHT/ RXP/N 0。 那么如果在硬件设计中,我们的引脚是正序连接的, P CIE _T/R XD_0 _P / N 连接至 bank 111的 MGTHT/ RXP/N 0 , 依次递增 , P CIE _T/R XD_7 _P / N 连接至 bank 112的 MGTHT/ RXP/N 3, 该怎么办,此时只需修改IP生产的xdc文件,把对应的Lane改成对应的Location即可。 通过以上分析理解,我们知道了在硬件设计中,xilinx FPGA的V7690T-FGG1927器件如何连接高速PCIEx8接口。如有理解不到位的地方,还请各位大佬不吝指导。 关注小编的微信公众号查看更详细的内容哟:xiaomage_group。
  • 热度 12
    2018-11-21 16:38
    9094 次阅读|
    3 个评论
    一直用着的一个某品牌的剃须刀,是内人某年给买的礼物,价格四百多,为什么送剃须刀哩,难道我留着胡子不 man 了么?在学校的时候用的是 10 元钱的某国营百货部卖的剃须刀,杠杠的好用。毕业后买了一个 170 多的超人剃须刀,杠杠的不好用,刮胡子就像钝刀子割肉,切不断还夹胡子,不由得怀念 10 元钱的“杂牌”。 不过某品牌这个挺好用,也挺耐用。为什么拆,当然第一原因是手多;第二原因是我使用的时候一直是红灯亮,在我的印象中,红灯亮不就是没电了么,那就充电呗,充电绿灯?! what ?充不进电?这种现象困扰我很久,算了,拿回实验室拆吧。 看标示 1.2V ,应该就是镍氢电池,充电电压是 8~15V 的宽电压,很少见。充电器上标记是输出 8V/100mA ,好吧,这个功率其实挺低的了。经过测量,适配器输出 8.4V ,正常! 8V 输入时电流仅 0.01A ,难道是坏了?还是说的确是满电? 机身尾部有一个螺钉,打开鬓毛剪,里面还藏着一个螺钉,这些是内六星螺钉,难道是防拆?没啥意义吧?! 拔下刀头,就可以看到里面两个“浮动”转轴和竖着的鬓毛剪的拨杆,下图是转起来以后的样子,可以发现实际上转轴和拨杆是同时活动的,但实际使用的时候鬓毛剪关闭以后是不动的,结构上将剪刀和拨杆分开了。 所谓的浮动刀头是因为底下转轴也是浮动的,所以卡不死。而转轴的浮动其实非常的简单,就是转动部位安装到一个有弹性的硅胶片上,可以随意按压。转轴下面白色的圆形区域,就是一个硅胶片。 拆下转轴就可以齿轮组,大齿轮是变速轮,同时驱动两个转轴,大齿轮上的小圆柱体是大名鼎鼎的曲柄滑块的结构,用来拨动上面提到的拨杆。小齿轮是电机的驱动轮。 取下齿轮,取下固定轴用的黑色塑胶件,就可以看到电池、电机、电路板。实际上电机是很松散的,摇晃有声音,主要的固定就是靠上面塑胶件把轴限制住,非常简单的结构。 撬开塑胶外壳以后,整个电路板就暴露出来了。 电池是直接焊接在 PCB 板上, PCB 是单面板,电池和电机供应一个白色塑胶的卡座。 镍氢电池实际测量 1.36V ,满电,所以不是电路问题。尾部像九齿钉耙的是一个定制的金属插片,是将金属片包塑做出来的。作用就是直接和尾部充电器的插针 卡 在一起,省去焊接的步骤。这是我看到的唯一一处觉得有点意思的设计。 整个背面的电路,非常的简单,但是也能感觉得出来是挺有经验的人的设计的,只有两个简单的 DC/DC 电路,一个用来充电,一个用来放电,没有特别复杂的电路。两个 LED ,一个是 0603*2 红绿双色,是充电指示;一个是 0603 的红色,放电指示。也就是说只要开机,就是红灯,这种定义不知道是怎么奇葩的想法。 大部分地方涂覆了淡黄色的三防漆,能起到比较好的防护作用,可以防止水汽进入腐蚀,延长寿命。这也是为什么能够水洗的原因。但是仅限水冲洗刀头,也就是只能 IPx4~x5 的等级,结构上电子上都不能做到完全的防水。 奉上全家福。这是一个停产的剃须刀,使用 3 年,性能几乎没有变化。品质用料都不错,但是成本其实并不高,主要是塑胶模具会比较贵,但是值不值 400 块,这看商业运作了,这样的设计, 10 个能赶得上 mate20 的成本不?我想大概估计也许应该是不能的吧。
  • 2018-9-25 11:02
    4746 次阅读|
    4 个评论
    最初在实验室调试的时候,因为辐射超标,使用的是常用的导电泡棉 + 导电布的屏蔽结构,如下图所示, PCB 表面的普通作漏铜处理(绿油开窗),贴上导电泡棉后,再在后盖上贴上一层导电布,这样锁上后盖,导电布就通过导电泡棉对地短路,形成一个完整的屏蔽结构。(注:图中外壳是前盖,后盖在导电布上面,没有画出来) 使用前: 使用后: 从图上可以看出,此结构有比较好的屏蔽效果,尤其是 200Mhz 附近的频段。勉强算是可以通过,但是余量不高。高频部分的噪声也就没啥变化了甚至更糟。同时也实验了使用一种新型的“吸波材料”,就是前一阵子热卖的放在心脏前面的衣兜里可以防止手机对心脏的辐射,但是效果几乎没啥用处。也同时实验了将后盖的导电布换成铜箔,两者都是 0.1mm 厚度,铜箔效果稍微好一些,但是并不是很理想。 再加上,导电泡棉是内部泡棉,外面包裹导电布,一侧刷导电胶的结构,很容易因为泡棉老化变形而导致失效;导电胶导电效果也不是很理想;尤其是一次性要摆十几个泡棉,对于生产加工以及质量控制都不理想。 那么如果我们把铜箔贴紧板子,效果会怎么样?理论上说屏蔽效果肯定更好,因为间隙小了,辐射就更不容易泄露。由于铜箔是导电的,就需要增加一层绝缘塑胶。于是,结构如下。 测试波形如下: 从图上可以明显看出,底噪大幅度降低,说明铜箔起作用了但是尖峰反而更高了,为什么?本来的设想是用螺钉作为导体将铜箔对地短路,但实际上由于绝缘层压合以后无法剥离,所以螺钉对地短接不良,效果没能达到设计需求。那么再更改就需要想办法把铜箔对 PCB 的地更好的接触了。虽然理论上说,直接把螺钉位置的绝缘塑胶去掉是最理想的,但是实际铜箔生产中很难实现,所以最终选择的是将螺钉位置的铜箔伸出去一片“耳朵”,打螺钉的时候将耳朵弯下去一起打,实现对地的可靠连接。结构如下图: 实际测试效果如下: 底噪、尖峰都可以很好的通过了,余量充足。 虽然效果是达到了,员工操作也比较简单,但是剩下的问题就是这样的铜箔比较贵,一片差不多两块钱,而导电布加起来三四毛钱,所以,成本也是需要考虑取舍的了。 噪声虽然是电路设计的一大顽题,但是说起来不外乎就是接地 + 屏蔽,先不计成本,再逐步降本,细心大胆多次试验,终究是可以克服的。 新品设计流水账篇一:电量去那儿 新品设计流水账篇二:ESD 新品设计流水账篇三:接地位置对辐射的影响 新品设计流水账篇四:铜箔降噪实验
  • 热度 10
    2018-9-13 21:52
    7536 次阅读|
    6 个评论
    【博客大赛】TI杯电子设计大赛后记之二
    今天是个重要的日子,所以来更篇博客,虽然明天就要考信号与系统matlab实验了,应该去复习的才是。。。(围笑) 上次一篇博客讲述了我电设校赛时候的经历,这次就来说一说第一次暑假培训的经历。其实当时应该当时比完赛就立马记录下来的,现在一些细节已经有些模糊了,可是自己还是太懒了。 考试周完了之后就开始暑期培训,先是有一周的讲座,涉及单片机,控制测量,微小信号测量,电源几个方面,但是这种讲座方式的效果大家懂的,如果不是每节课要点名,肯定是大批大批的缺课的(并不是说老师不好,只是这种大型讲座方式并不适合所有的学生,而且一味在上面讲效果及很差)。当时我就利用这个时间去做了两块板子以备后面用到(但是其实最后没用到),一个是DA模块,用的芯片ad5761,双极性的16位DA,整套方案全是照搬官网上的评估板,只不过把两个DA芯片都做在了一块板子上,用了一套电源系统,独立的基准电压源,因为评估板的方案是先使用ADP5070这个开关电源芯片得到双极性电源,再用ADP7182和ADP7142两个线性稳压得到可调的正负电压和一个固定+5V用于基准电压的供电,我还为此把开关电源好好看了看,ADP5070因此成为我第一个完全从头看到尾的英文开关电源手册。然后是做的四层板,中间一层地,一层电源,我还尝试着按照书上看到的把开关电源的功率地在顶层给割开了,通过过孔连到了第二层地上,在连接DA芯片的模拟地和数字地引脚的时候我感到非常困惑,因为我在ADI的一份文档上面看到了这段话 许多 ADC 和 DAC 都有单独的 “ 模拟地 ” (AGND) 和 “ 数字地 ” (DGND) 引脚。在设备数据手册上, 通常建议用户在器件封装处将这些引脚连在一起。 这点似乎与要求在电源处连接模拟地和数字地的建议相冲突;如果系统具有多个转换器,这点似乎与要求在单点处连接模拟地和数字地的建议相冲突。其实并不存在冲突。 这些引脚的 “ 模拟地 ” 和 “ 数字地 ” 标记是指引脚所连接到的转换器内部部分,而不是引脚必须连接到的系统地。 对于 ADC ,这两个引脚通常应该连在一起,然后连接到系统的模拟地。由于转换器的模拟部分无法耐受数字电流经由焊线流至芯片时产生的压降,因此无法在 IC 封装内部将二者连接起来。但它们可以在外部连在一起。 和这段话 请注意, 系统中的 模拟地和数字地必须在某个点相连,以便让信号都参考相同的电位 。这个星点(也称为模拟 / 数字公共点)要精心选择,确保数字电流不会流入系统模拟部分的地。在电源处设置公共点通常比较便利。 我当时真是万脸懵逼。。 后来去问了一位特别大佬的学长(曾经的15年国赛电源国一,模拟电子设计大赛一等奖),学长给我了如下解释 DAC本身的数字部分电流 其实不大,对模拟部分干扰很小, 可以视为一个模拟器件 ,这类混合器件的 dgnd agnd并不是标识应该连接到系统的哪个地 ,芯片底下连在一起是常见的做法, 芯片底部连在一起不分割,实现低阻抗的连接 , 分割是为了避免数字部分对模拟部分的干扰 , 但系统其他数字ic可不一定,比如有微处理器等高频开关状态的数字器件,所以 混合信号器件下方不分割,但整个系统还是要分割的 ,不过DAC这个要注意, 有些DAC必须在下方直接连接有的D/A要求AGND与DGND之间的电位差不能超过+/-0.1V,如PCM1704,因此AGND与DGND必须连接在同一大面积地线上,超过压差会引起烧毁 评估板 的top是蓝色的bottom是红色的,可以看到红色的GND在芯片下面有一处直连 至此才解决了我的疑惑,我也比葫芦画瓢画了个板子,板子的原理图和PCB分享在附件中, 欢迎各位大佬来指点出有问题的地方,毕竟是新手第一次画这种要求比较高的模拟系统 (而且这个板子除了电源部分其他都没测试过,后来根本没用上。。) 说到这里突然想起来推荐一本感觉不错的书 《信号完整性与PCB设计》 ,很薄,是一本工程实践性的书,很多都是作者的经验,这本书也是第一次让我理解了特征阻抗和阻抗匹配的意义。 另外一块板子是ADS830,8位,60MSPS的高速AD,采用了手册里面的方案,采用手册里面现成的方案如下图 供电用的ADP7142,12M的有源晶振,时钟乘法器CDCS504-Q1可以把频率提到48M,同样这块板子后来也没用到(汗颜。。)PCB和原理图也会在附件给出,欢迎大佬指出问题。 这两块板子做下来,着实花了不少钱,而且后来事实证明完全没有必要。 这里就有一点,我们没有工程经验,只是做过很少的实践,大部分都是在学书本知识,所以我们往往不能很好的选择最合适的器件,很多时候完全是浪费资源,浪费器件的性能来完成一些可能用很便宜的器件就可以做到的事情。同样我觉得这也是现在的电子设计竞赛面临的一个问题,有时候甚至变成了单纯的拼器件,拼工艺(今年省赛的那个超级电容充电小车的题就是一个很好的例子,可能出题人的意愿是好的,但是事实是这道题就向着奇怪的地方发展过去了。。这是后话) 大家也都知道,单纯的高频高增益放大器题目是不会继续在电设竞赛中出现了,所以校赛做了放大器的我们就考虑了仪器仪表题目,看到了前几年的省赛的仪表题感觉挺难的,什么delta-sigma调制啊,锁定放大器啊。之前在AD选型的时候就看到了有delta-sigmaADC,所以很想了解一下,当时找了好几篇资料,还有论文什么的,刚开始太高估自己的意志力了,去看了英文论文,结果没看几页就看不下去了,不过一篇论文里面的一个例子倒是很好(这里大概复述一下,因为那个PDF我好像不小心删掉了) A每天都要去咖啡馆买咖啡,咖啡一杯3.6元,但是A只有5元的钱可以付,如果A每天付5元,店家找零,那么将会很麻烦,所以采用这样一种方式,第一天A掏了5元买咖啡,但是店家没有找零,店家欠A,所以第二天A没有付钱就拿走了一杯咖啡,现在A欠店家,所以第三天A买咖啡的时候付了5元,但是现在A还是欠了0.8元,所以第四天的时候A买咖啡的时候还是付了5元,就这样一直下去。。。 这个是一篇文章里面的一个模型,文章是 High Speed and Wide Bandwidth Delta-Sigma ADCs,springer出版社的 ,英文没问题的可以看下,PDF放在附件里面了。 还有我觉得我之所以觉得这个好难是因为信号与系统学的还不扎实,对于降采样,抗混叠这些概念都不是理解的很好,刚开始看的那些论文上又讲的很理论,所以对于理解delta-sigma还是造成了一些困难,不过最后还是明白了,而且在multisim用ua741成功仿真,这里再给出一个ADI的关于delta-sigma的资源 http://www.analog.com/cn/design-center/interactive-design-tools/sigma-delta-adc-tutorial.html 这个网址有一个delta-sigma调制的动画模型,可以帮助理解,而且ADI还有很多这方面的PDF,比论文要好看懂的多,有中文的!!! =5W. 说来惭愧,对于这个2015年的国赛题,刚开始还是轻敌了,觉得有那么多的报告,随便找来一份做一做肯定就没什么问题了,刚开始找到一份用固定增益的射频放大器和数控衰减器的方案,觉得不错,看手册觉得那几款芯片的幅频特性可以满足通频带要求,于是第一天我疯狂画板子,画了四个模块的四层板,但是四层板好贵啊,就想把每个小模块合到一张10*10的大板子上拿去打样,但是无奈都被PCB厂家识破了,要按拼版来算价钱,好鬼好贵,最后找了一家性对便宜还算快一点的打了三个模块的板子,然后等着板子到(后来板子到了都已经是验收前一天了,结果上电测试发现还是会衰减,和手册给的图一点也不一样 ,这个方案就弃用了)。后来我们想着不能这样干等着啊,于是就找到了另外一套方案,又去学校库房里面淘宝了很多原来剩下来的模块(我们学校对于电设竞赛是全力支持的,很多东西学校都会给提供,老师也都非常尽心)。这套方案就是很常见的,看到好几套方案都是这样的:OPA695做最后一级的功率驱动,VCA821做增益可调,OPA847做初级放大(847我们用了两级)。但是其实这三款放大器根据手册来看都不能做到在200M的时候同时满足增益平坦和衰减<3db的要求,就需要调节来让它们相互补偿。但我们发现照着报告来,做出来效果根本就不是那么回事! 开始的时候先调847和821,发现止不住的衰减,就试图把847的增益调的小一点,让它的幅频上翘厉害一些,就不停的换电阻,感觉板子焊盘都要焊掉了(这里感叹一下刀头烙铁在拆电阻的时候真是利器),好不容易把它们调的差不多平坦了,结果加上OPA695之后发现居然在100M以上一个频段内幅频曲线上翘了???!!并且这个上翘的幅度完全超过了2db的要求,没办法,又要换电阻调增益。这时候发现,去换其中某一级同相放大器的输入电阻,居然也对它的幅频曲线产生很大影响,尤其在这个上翘这方面,真的太玄学了。。。 我现在也没有搞懂是为什么,当时就只能盲目的根据实验规律换啊换,换啊换,一换就是三天过去了,没有一点进展,不是上翘就是衰减,直到验收前一天,然后同学又说我们换个反向放大器试试吧,然后突然就从衰减变成上翘了,想到既然上翘的话那就在其中一级的反馈电阻并联电容试试,去缩短它的频带宽度并且提高稳定性,然后,然后就莫名其妙的满足要求了。。。当时那个激动啊,生怕动两下又不行了。对,这里还提到一点,为了让OPA695可以提供足够的电流去满足最后一级的摆幅,不至于让波形削顶失真,我们最后给它加了+=6点多伏的电压来供电,相当极限的操作,但是上电时间长了之后芯片都有点烫手的了。。最后的效果就是,整个系统在某一个频段可以达到输出幅度满足要求且波形不失真,但是其他的频段会出现严重的失真,只能把增益降下来。 第一轮就这么苟过去了,具体成绩是多少不清楚去,反正没有拿C,但是说实在的,这一轮真的是晕晕乎乎摸不到一点头脑,就莫名其妙的好了,让我真是体会到了一把高频的玄学~ 附件材料放在另外一个帖子里了,点击这里跳转
  • 热度 5
    2018-9-5 12:14
    4375 次阅读|
    1 个评论
    【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
    卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展 50 年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持 80m/s 的速度。速度和位置每 0.1 秒测量一次,但是由于速度传感器的数据丢失,桑先生只能通过位置数据来得出速度值。 直接上 Python 代码: 运行结果: 蓝色点:滤波前的位置数据。 紫色线:滤波后的位置数据。 红色线:滤波前的速度数据。 青色线:滤波后的速度数据。 结论: 1.Python的Numpy库用作矩阵运算,语法和Matlab有差异,所以需要确认语法细节。 2.卡尔曼滤波器的系统建模非常重要,完成了系统建模,也就完成了滤波器的一半设计。