- 博客(27)
- 收藏
- 关注
原创 【CAN介绍】【第一篇章】
公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。▶ 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序。5. CAN收发器 - TJA1050(高速CAN)电压差为0V时表示逻辑1(隐性电平)电压差为2V时表示逻辑0(显性电平)电压差为-1.5V时表示逻辑1。▶ 异步,无需时钟线,通信速率由设备各自约定。电压差为3V时表示逻辑。校验、位填充、位同步、错误处理等特性。一个主控外挂多个模块(高速)2. 主流通信协议对比。
2024-11-14 08:58:40 355
原创 常用文件哈希值获取方法
,也称为文件散列值或哈希值,是将文件内容通过哈希算法转换成的固定长度的小数值。这个转换后的数值非常独特和紧凑,即使文件内容发生极微小的变化,产生的哈希值也会截然不同。这意味着每个文件都有其独特的哈希值,类似于人的指纹,可以用来唯一标识文件。举例常用的md5和sha256值在Linux和windows下的获取方法。命令会输出文件的SHA256哈希值,以及文件名。命令会输出文件的SHA256哈希值,以及文件名。命令会输出文件的MD5哈希值,以及文件名。命令会输出文件的MD5哈希值,以及文件名。
2024-10-31 09:33:07 129
转载 ARM(Cortex-M4启动过程)
Cortex-M4复位后首先从默认向量表处读取SP初始值和PC初始值。为了让Cortex-M4复位后立即有可用的复位向量,必须将向量表存储在ROM中,然后在初始化过程可选地将向量表地址映射到其它区域。向量表的定义如下:DCD 0;Reserved;
2024-10-26 22:11:53 47
原创 【C语言】内联函数
static是静态修饰符,由其关键字修饰的变量会保存到全局数据区,对于普通的局部变量或者全局变量,都是由系统自动分配内存的,并且当变量离开作用域的时候释放掉,而使用static关键字来修饰,只有当程序结束时候才会释放掉,使用static inline修饰时,函数仅在文件内部可见,不会污染命名空间,另外,函数在运行过程中也会分配内存空间,但是由于static的存在,就和修饰变量类似,它只会开辟一块内存空间。inline关键字是C99标准的型关键字,其作用是将函数展开,把函数的代码复制到每一个调用处。
2024-08-11 09:16:31 931
原创 函数指针和指针函数
ptr是指向函数的指针变量,所以可把函数max()赋给ptr作为ptr的值,即把max()的入口地址赋给ptr,以后就可以用ptr来调用该函数,实际上ptr和max都指向同一个入口地址,不同就是ptr是一个指针变量,不像函数名称那样是死的,它可以指向任何函数,就看你想怎么做了。这两个概念都是简称,指针函数是指带指针的函数,即本质是一个函数。1. “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。
2024-08-08 08:06:54 709
原创 《道德经》【第四章】
大“道”空虚开形,但它的作用又是无穷无尽。消磨它的锋锐,消除它的纷扰,调和它的光辉,混同于尘垢。⑨湛(zhan):沉没,引申为隐约的意思。段玉裁在《说文解字注》中说,古书中“浮沉”的“沉”多写作“湛”。锉其兑⑤,解其纷⑥,和其光⑦,同其尘⑧。连同上文“湛呵”,形容“道”若无若存。参见第十四章“无状之状,无物之象,是谓惚恍”等句,理解其意。⑤锉其兑:锉(cuo):消磨,折去。挫其锐,解其纷,和其光,同其尘。以上四个“其”字,都是说的道本身的属性。①冲:通盅(chong),器物虚空,比喻空虚。
2024-04-07 22:19:56 183
原创 关于多信号量打拍的方法讨论
分析以上代码,pkt_vld、pkt_sop、pkt_eop都是控制信号量,信号量打拍需要复位。pkt_data是数据信号量,信号量打拍不需要复位,这样也节省功耗。在实际工作中,由于时序的原因必须对相关信号打拍(用D触发器实现)以满足设计要求。当打拍数增加或者需要打拍的信号量增加,代码长度明显会增加,并且不易扩展。当信号量增加或者打拍数改变,只需要修改输入、输出信号量和参数,容易扩展。虽然以上代码看起来很直观,但是这样么有规律的事情什么不做一个CBB呢?若有不正确的地方,欢迎大家指正。
2024-04-02 23:46:04 299 1
原创 《道德经》【第三章】
不显耀足以引起贪心的事物,导使民心不被迷乱。因此,圣人的治理原则是:排空百姓的心机,填饱百姓的肚腹,减弱百姓的竞争意图,增强百姓的筋骨体魄,经常使老百姓没有智巧,没有欲望。圣人按照“无为”的原则去做,办事顺应自然,那么,天才就不会不太平了。是以圣人之治,虚其心,实其腹;是以圣人之治也,虚其心⑤,实其腹,弱其志⑥,强其骨,恒使民无知、无欲也。⑤虚其心:虚,空虚。心:古人以为心主思维,此指思想,头脑。虚其心,使他们心里空虚,无思无欲。④见(xian):通“现”,出现,显露。①上贤:上,同“尚”,即崇尚,尊崇。
2024-04-01 23:21:26 151
原创 关于二进制转格雷码的方法讨论
因为方法1计算过程:格雷码值当前位等于二进制当前位与高一位相异或,只有最高位是赋值相等。从公式中可以看出,格雷码的最低位g[0]等于b[0] ^ b[1],以此类推格雷码的次高位g[n-2]等于b[n-2] ^ b[n-1],而最高位等于g[n-1]=b[n-1]。通过对以上代码的分析,因为最高位直接赋值,因此应该有7个LUT2资源的消耗,该LUT2用于做异或运算,综合出的电路图如下,符合预期。因为是异或运算,因此也可以通过比较实现,二者相同赋值1‘0,否则赋值1'b1。b表示二进制值,g表示格雷码值。
2024-04-01 23:11:07 713
原创 关于以FIFO+RAM方式缓存报文的资源讨论
根据a、b、c三点,一个最大报文以256字节可以切成64个信元,因此需要占用RAM 4096个地址资源,需要占用FIFO 64个深度资源;从这一方面考虑RAM的深度为2*4096=2^13,FIFO的深度是128=2^8。根据a、b、c三点,一个最大报文需要占用RAM 1024个地址资源,要是背靠背再来一个最大报文,还得再需要RAM 1024个地址资源。从这一方面考虑RAM的深度为2*1024=2^11,FIFO的深度是2。因此FIFO深度是256=2^8,RAM深度是2*1024=2^11。
2024-03-31 09:01:34 979 1
原创 《道德经》【第二章】
天下皆知美之为美,斯恶(è)已;皆知善之为善,斯不善已。故有无相生,难易相成,长短相较,高下相倾,音声相和(hè),前后相随。是以圣人处无为之事,行不言之教,万物作焉而不辞,生而不有,为而不恃,功成而弗居。夫(fú)唯弗居,是以不去。
2024-03-27 22:46:34 142 1
原创 RTL编码之“以太网报文地址按照掩码匹配白名单的方法“
在数据通信中,以太网报文是非常常见的报文类型。数据处理中经常遇到对特定“地址”的报文做相应的处理,例如对DMAC 是ab-cd-11-22-33 上送CPU,或者丢弃等等。因此需要首先匹配特定报文,然后再做特定处理。
2024-03-27 22:18:22 1057 1
原创 《道德经》【第一章】
道可道,非常道;名可名,非常名。无名天地之始,有名万物之母。故常无欲,以观其妙;常有欲,以观其徼(jiào)。此两者同出而异名,同谓之玄,玄之又玄,众妙之门。
2024-03-26 22:31:26 130
原创 UVM功能验证之编译脚本
1. top_tb、env、agent、reference model、scoreboard、interface、driver、monitor、sequencer、seqence、base_test、两个测试用例;以上内容简单介绍demo验证代码的结构、运行脚本的内容和执行方法,但是并未提到波形文件的生成以及查看波形脚本,待继续总结。在UVM验证中,用到的EDA工具有QUESTA、VCS、NCSIM,为了灵活使用往往需要脚本中适配三者。该文件包含UVM代码库路径、DUT代码文件路径、top_tb.sv。
2024-03-23 23:35:35 458 1
原创 RTL编码之“基于简单双端口RAM的掩码操作方法“
一组信息包含多个相同含义的信息,例如RAM存储位宽是8bit,每bit表示一个port端口的link状态(1:linkup;每2bit中,高位表示是否由光模块,低位表示link状态。反过来考虑,要是每个端口占用一个地址,仅仅存储端口的link状态,这样会非常浪费资源。步骤2:地址2的0和4端口状态置为DOWN(0),然后读出结果,预期结果0xee;步骤3:地址2的1和7端口状态置为DOWN(0),然后读出结果,预期结果0x6c。步骤1:地址2所有端口状态置为UP(1),然后读出结果,预期结果0xff;
2024-03-23 10:31:38 549 1
原创 RTL编码之轮询调度方法
该调度器根据输入的队列状态和上一次队列索引,从索引+1的位置开始遍历队列,直到当前索引。,前半部分选择索引2,后半部分选择索引7,因此这次轮询选择索引2;,前半部分选择索引1,后半部分选择索引7,因此这次轮询选择索引1;,前半部分选择索引0,后半部分选择索引7,因此这次轮询选择索引0;,前半部分选择索引6,后半部分选择索引0,因此这次轮询选择索引6;,前半部分选择索引6,后半部分选择索引0,因此这次轮询选择索引6;,前半部分选择索引5,后半部分选择索引0,因此这次轮询选择索引5;
2024-03-23 00:27:51 198
原创 低功耗编码之“总线二”
这样使用的总线数据data_in_ff2随着时钟翻转而改变,动态功耗就大。大可不必这样,因为使用的数据总线必须在vld_in有效才能使用,可以通过有效信号vld_in控制。代码16~35行,新增vld_in_ff1/vld_in_ff2两个信号量。只有在二者信号有效时锁存,不必随时钟时刻翻转,这样功耗就小。优化前的动态功耗:2.068W,优化后的动态功耗:2.052W。符合预期,虽然降低不多,但是随着数据位宽增大,降低百分比必然会更明显。原则:通过有效信号对总线锁存降低总线反转。
2024-03-22 22:19:43 169 1
原创 RTL编码之“严格优先级调度方法“
在RTL编码中,经常遇到多个队列(或者多通道/FIFO)优先级调度。若队列(或者通道/FIFO)数较少,可以通过if-else可以实现优先级调度。当队列(或者通道/FIFO)数大于8时,代码长度可知。使用for循环实现优先级调度且易于扩展。这样只要修改参数可以是实现代码的扩展。
2024-03-18 22:05:56 670
原创 低功耗编码之“总线一”
使用数据总线须在控制总线有效,因此数据总线需要打拍使用的情况下,无需复位。二者功耗比较,静态功耗没有差异,动态功耗有差异且优化后功耗降低。原则一:数据总线打拍建议使用无复位寄存器,可以减少静态功耗。使用Vivado以上两段代码综合,查看二者功耗。静态功耗结果不符合预期,可能是由于工具的原因。有知道的朋友可以帮忙解答一下原因......原则二:控制总线打拍严禁使用无复位寄存器。
2024-03-18 21:01:05 411
原创 低功耗编码之“复位”
同步复位指的是时钟有效沿来临的时候进行复位操作,同步复位使得电路为同步电路,能够利于仿真,缺点是要求复位信号要大于一个周期,否则无法保证成功复位,此外综合出来的电路实际上并没有利用器件的复位端,而是在输入端插入额外的逻辑电路,这样增加了额外的逻辑资源消耗。异步复位是指的在任何时候只要复位信号有效即可复位,不占用额外的逻辑资源,充分利用器件的复位引脚,但是由于来临和结束时间未知,容易引起亚稳态现象。同步复位电路总功耗:4.246W,异步复位电路总功耗:0.362W。典型的复位电路,同步复位和异步复位。
2024-03-16 18:17:38 390 1
原创 低功耗编码之“控制信号有效时,透传输出输入的数据;控制信号无效时,输出数据为0。”
但是,vld_in无效时总是在时钟上升沿对输出赋值,无意中就产生过多的功耗。场景1:控制信号有效时,透传输出输入的数据;控制信号无效时,输出数据为0。通过Vivado,二者选取相同的器件,运行后比较二者的功耗报告。优化后的功耗相比优化前,功耗减少0.348,减少了15%。
2024-03-16 10:31:22 489
原创 The UVM Primer中文
链接:https://pan.baidu.com/s/1yEDa9GK2qJaguwrycf6XJQ。另外一种讲解思路的资料。
2024-02-01 23:39:38 419
原创 UVM实战-卷I
链接:https://pan.baidu.com/s/1bbjhdT1zrSUwOu8zTEp7xg。非常好的学习资料......
2024-01-20 17:37:02 675
BCM56820 Programmer’s Reference Guide
2024-04-14
BCM53134M Preliminary Data Sheet
2024-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人