- 博客(46)
- 资源 (15)
- 收藏
- 关注

原创 fpga状态机详解
什么是状态机:状态机通过不同的状态迁移来完成特定的逻辑操作状态机的分类:Moore型状态机和Mealy型状态机Moore型:状态机的变化只与当前的状态有关Mealy型:状态机的变化不仅与当前的状态有关,还与输入有关如何创建状态机:状态机的创建可以分为一段式,两段式和三段式一段式:主要是讲所有的状态变化以及导致的输出变化都写在了一个always快中。两段式:将一些复位信号,clk信号单独写在
2015-11-17 20:43:15
13364
原创 amba协议补充(一)
ahb的突发就是,manager 给一个起始操作命令Hwrite,地址haddr,突发类型hburst,每个beat传输数据大小hsize 后,subordinate 会自动计算下一个访问地址,自动将数据写入/ 返回。如下的场景,读出的数据就是刚刚写入的最新数据。在ahb的基础上,删除hsize ,hburst,hport ,hmastlock,htrans。多对多的互联方式:在一对多的前提下,增加对多和manager的 arbitation,常见算法为rr ,sp,wrr 等。异常时返回error ,
2025-05-20 11:35:36
804
原创 amba axi 协议精讲
1、总线、接口和协议常常放在一起,但是他们有各自的含义:一组由各种逻辑器件构成的数据传输通道,一般由数据线、地址线、控制线等构成;②、接口:一种连接标准,又常常被称为物理接口;传输数据的规则2、AXI总线分为①、AXI4:(For high-performance memory-mapped requirements.)主要面向高性能内存映射通信的需求(如读写DDR、使用BRAM控制器读写BRAM等),是面向内存映射的接口,允许最大256个数据突发传输;
2025-05-07 18:31:45
614
原创 gray code
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。
2025-03-27 15:16:34
330
原创 建立时间,保持时间
以上结论时基于2个Flop的时钟时同时到达的,由于存在分布式rc 网络,时钟走线过长,负载电容等因素,会造成时钟到达相邻2个时序单元的时间不同,姑存在。通常间隔一个时钟周期,所以 launch edge + Tc = latch edge。如果setupslack >0 ,满足建立时序,否则不满足建立时序要求。launch Edge: 从源寄存器发出数据的边沿。latch Edge:锁存数据到目的寄存器的边沿。原因是触发器的自身构成决定的;
2025-03-27 12:16:41
251
原创 windows下安装sublime
sublime4 alpha 4098 版本 下载。alpha4098 的licence。可以根据待破解的版本选择下载。
2025-03-25 11:25:45
414
原创 win7 安装github desktop 失败解决
最新的github desktop 已经不在支持win7 系统。从v3.2.4 之后的版本不在支持win7 系统。
2025-03-25 09:13:17
293
原创 背靠背 丢包问题分析
使用原始数据vld作为逻辑判断条件, 在sop时,不输出数据。这样隐形的浪费了一拍。在eop 时会存在eop_d1也需要将未出完的数据继续数据。若eop_d1 && vld && sop,那么会将下一拍的sop数据丢掉,造成丢包。vld_d1_lacht && vld时,可以输出数据;存在一个设计需求,原始数据不足满字节有效的,要将数据整体右移对齐后输出。这样vld_d1 每一拍都在输出,没有浪费,也不会造成背靠背时的丢包现象。实际分析时,因为是做数据裁剪,不会出现带宽膨胀问题(1拍需要多拍出)。
2024-10-10 11:33:08
256
原创 数字IC设计基本概念之多时钟设计
但是,对于如图所示时钟复用器,在任何给定时间,三个时钟中只有一个可以在路径上运行。考虑具有四个时钟CK1,CK2,CK3,CK4的电路示例。如果两个时钟共享一个共同的时钟源,并且有固定的相位关系,则两个时钟相互同步。这会使EDA工具忽略从CK1时钟域开始到CK2时钟域结束和从CK2时钟域开始到CK1时钟域结束的任何时序路径。EDA不会检查由一个时钟触发并由另一个时钟捕获的时序路径,就像在两个时钟之间声明false path。在任何给定的时间,只有两个时钟中的一个被使能,所以两个时钟不会交互。
2024-09-02 17:23:40
1196
原创 时序优化的常见
优化时序的目的是什么?其目的就是为了满足系统正常运行时所需要的建立、保持时间,最终得出两个关键的公式:Sslack(建立时间的余量)= [T_cycle –(Tco + Tdata)+ △T] – T_setup ≥ 0Hslack(保持时间的余量)= [(Tco + Tdata)–△T] – T_hold ≥ 0根据公式可以看出同一系统内的建立时间余量和保持时间余量是一对矛盾体,如果建立时间余量大了,保持时间余量必定会缩小,反之亦然。,通常BUFG是用于全局时钟的资源,可以解决信号因为高扇出产生的问题。
2024-09-02 17:22:59
1035
原创 如何计算fifo 深度
在一次突发时间3000ns内写入120个数据,读出37.5个数据,剩余:120-37.5=82.5 ≈83 (要向上取整,因为要保证FIFO的最小深度,避免溢出),剩余83个数据需要缓存到FIFO中,即FIFO的最小深度为83。每两次写入操作间隔1个写时钟周期,等于每两个写时钟周期才写入1个数据,即等价的写入时钟频率 fA'=25MHz,写入一个数据需要的时间:1/25MHz = 40ns。实际的读时钟频率fB'=12.5MHz,完成一次读操作所需的时间为:1/12.5MHz=80ns。
2024-08-21 17:48:26
882
原创 如何设置系统时钟频率,可以打满带宽
有些设计会存在fregment,pd (pkt 的desc),fd()、sf(start of frg),ef (end of frg)这些信息;比如bus_wdth 是512 bits (64B),此时发送的数据payload为520 bits(65B),就需要消耗2 cycle的时钟。解释: 先计算payload需要几拍传输,就会对主频打几折,然后在使用折损后的主频 x (payload +开销)*8 / 1024。系统处理逻辑使用的时钟,不同模块可以使用不同主频时钟(与总线位宽有关系);
2024-08-12 18:37:19
594
原创 数字电路设计常见术语
头阻(Head-of-Line blocking)发出未回复(outstanding)交织(interleaving)乱序(outOfOrder)乱序重排(reorder)加速比(speedUP)
2024-08-05 09:54:51
857
原创 cache 设计
换入: cache ptr申请命中后,将新数据写入chche。若存在冲突,老数据需要等待所有读返回后回写ddr;换出: cache ptr 申请命中,但是存在冲突,需要将老的数据换出;有老化机制,符合老化标准,也将数据换出,cache ptr 释放;老化: 一种将cache ptr 回收程序, 可以按照特定算法实现。下文有描述。保序:硬件上设计cache ,必然使用并行思想。存在多个读写 outstanding 情况,需要按申请顺序,保序输出读写请求。
2024-07-11 17:44:38
697
原创 pcie 基础
PCIe to PCI/PCI-X桥接器的主要功能是将来自PCIe总线的事务转换为PCI或PCI-X事务,并将其传递给连接的PCI或PCI-X设备。PCI Express to PCI/PCI-X桥接器是一种设备,用于连接PCI Express(PCIe)总线和传统的PCI或PCI-X总线。PCI桥x1发现当前总线事务使用的PCI总线地址不是其下游设备使用的PCI总线地址,则接收这个请求,并结束来自PCI设备11的 Posted存储器写请求,将这个数据请求推到上游PCI总线上,即PCI总线x0。
2024-07-10 09:59:51
3875
原创 rtl 开发必会技能
解决方法: 在一个always 内控制多个信号,若2者存在一个时钟同时拉高的可能,先判断是否同时拉高,在分别判断。来写,存在epp_fin 拉高后mer_fin需要采集的信号被忽略。在一个always 内操作2个信号,若2者存在关联关系:例如epp_fin和mer_fin,如果使用if else。|data写法简单,但是漏写| 的可能,测试仿真器会检查data==1'b1。小端是数据发送的高位会存在内存高位地址,低位存在内存低位地址。字节序的高位对齐和低位对齐,大端(网络字节序)和小端。
2023-10-15 16:34:50
276
原创 连续相同idx 性能为4cycle、不同idx性能为2cycle
时序2: 在读发起的hazard0和hazard2时,回写上次的新数据,所以在3cycle 后的第二次rd 可获取最新值。时序3: 在读发起的hazard1和hazard3时,回写上次的新数据,所以在3cycle 后的第二次rd 可获取最新值。时序1 : 在读发起的hazard1时,回写上次的新数据,所以在3cycle 后的第二次rd 可获取最新值。mem_bypass技术的核心就是在下一次的读前,可以cover 上一次的写。② 当前idx 与上一个相同,严格4cycle的调度 ,级转换为如下时序。
2023-09-11 15:06:50
190
原创 free buffer memory
2K个节点仅需要开辟32bit*32bit , 4K个节点需要32bit*64bit资源,相较于使用fifo的方式可以资减少90%以上资源。例如,有2K 个节点可以被使用,则需要开辟2k*11bit的 资源,4K 需要4K*12bit的资源。随着节点个数的翻倍,开辟的资源成指数增长。每个周期至多有一个节点被申请使用, 被申请的节点从列表中删除,使用完的节点被重新放入节点队列,等待下次申请使用。bitmap将节点的地址映射为 {行地址,列地址},不管 节点个数多少,对于每个节点,仅占用1bit资源。
2023-09-04 16:33:27
223
原创 芯片设计-- mem_bypass
在设计前,芯片架构师会约定mem的读延时(比正常的mem的延时要大)。mem_bypass 的就是将rd_rd----rd_vld间存在的写信号对应的写数据锁存起来,在rd_vld 时与mem返回的o_rdata 做mux选择。如果期间存在写,则使用写数据(新数据),否则使用mem 自身返回的o_rdata。其可以保证逻辑在对同一个地址做读写操作时,保证读到的数据是最新值(当前新写入的值)。读写冲突的后果就是: 读出的数据不是当前的最新值,使用旧数据做运算后回写数据错误等一些列问题。
2023-08-31 14:43:54
661
原创 vhdl 函数
使用and_reduce() or_reduce 判断数据是否>0 在或者数据达到最大值zores(N)完成数据的高位或者地位补0not 对信号取反,类似Verilog的 ~int2slv(n,p),将十进制数据n转换为位宽p的std_logic_vector结构体的使用及结构体初值定义,这个在一个结构体体量很大时,有很大优势。无需像verilog一样定义一堆名字机构类似的reg,并且在仿真时观察更加直观type a is recordarray1 : std-logic_vecto.
2021-01-25 19:51:13
2046
原创 开发资料link汇总
Verilog XLchrome-extension://ikhdkkncnoglghljlkmcimlnlhkeamad/pdf-viewer/web/viewer.html?file=https%3A%2F%2Fwww.csd.uoc.gr%2F~hy225%2F13a%2Fauxiliary%2Fvloguser.pdf
2020-12-14 15:12:42
279
原创 第一个uvm的例子
第一个大概的 uvm 例子及相关坑首先讲讲vhdl的加法运算的坑使用vhdl写了一个两个数相加的module,signal定义为std_logic_vector类型,然后直接使用一个process根据valid的脉冲做加法运算。自己也注意到了加法、乘法等溢出问题,但是编译总是报左右位宽不匹配。然后才发现vhdl不允许vector类型数据直接相加,需要先做类 型转换。定义integer类型signal使用CONV_INTEGER(signal name)转换两个integer做自
2020-12-11 17:54:09
619
原创 fpga编辑器的选择和使用
有关notepad 和 UE 开发软件 常用 command 总结对于硬件开发人员而言,一个便捷的开发工具可以提升自己的编码效率。由于FPGA的使用者较少,加之alter和Xilinx自带的编辑界面太烂,例如没有全局查找选项、Xilinx的编辑界面每次操作完成需要刷新或者重新关闭文件再打开这些反认类操作,难以胜任一般的module开发。之前一直深谙notepad软件,由于其plungs可以支持verilog和vhdl还有多种主题,所以一直使用其作为编辑开发工具。但是最近开始使用UE。所以需要在此讲有关
2020-12-10 15:08:28
621
原创 基于FPGA的tcp、udp协议处理
一、常见网络传输协议1.TCPtcp(Transmission_Control_Protocol),传输控制协议。包含3次握手和4次挥手操作,由于存在主从间的交互。是一种稳定的数据传输通信协议。基于这些,其需要点对点的通信交互,不支持类似UDP的组播操作(一对多操作)。下图描述常见tcp建立链接和fin/close的流程下图解释tcp头的组成:主要有源、目的ip和port。sequence NO用于判断tcp间的连续性或者乱序重传,checksum用于校验在传输过程中数据内容是否丢失或者改变,保证
2020-11-12 16:01:15
2273
原创 解决启动vivado2017时,弹出”Error when launching vivado.bat: Launcher time out”
vivado 2017 启动错误
2020-08-15 10:28:46
2186
原创 视频聚焦问题
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-10-29 13:14:49
561
原创 关于在fpga上进行目标检测、跟踪的设计
对于目标检测、跟踪一般的科研,主要是使用matalab,VS,VC6.0结合opencv(开源计算机视觉库)进行开发。主要是使用一下两个方法【通过论文总结】 一、 使用matalab,选定检测、识别的算法,弄懂算法的含义,添加自己的改进方案。编写matalab代码(主要是C、C++)。运用视频检测集,对算法的精确性、鲁棒性进评测,并与未改进的算法对比,突出自己提出算法的优势。 二、使用VC、VS
2016-10-16 19:09:21
10530
原创 树莓派Lamp的安装
树莓派没有硬盘,取而代之的是TF卡。只需一个电源一张TF卡即可启动树莓派。一、下载树莓派系统 树莓派官网下载地址: http://www.raspberrypi.org/downloads(可下载最新的 Raspbian 树莓派系统也可以在我们公司wiki上面下载我们配置过的系统)二、格式化SD卡插上 SD 卡到电脑,使用SDFormatter.exe软件格式化 SD 卡
2015-12-28 18:04:47
2015
原创 fpga分模块(简单的模块调用)
顶层模块模块:module structer(input clk,input rst,output led,output [2:0] led1);fash u1(.clk(clk),.rst_n(rst),.led_out(led));run u2(.clk(clk),.rst_n(rst),.led_out(led1));endmodule闪光灯模块:module fa
2015-10-18 17:05:41
17903
原创 fpga闪烁的led灯
module demo_led(clk,rst_n,led_out);input clk;input rst_n;output led_out; //reg rled_out;parameter time1 = 23'd5_000_000;//晶振为50hzreg [22:0] count;always @(posedge clk or negedge rst_n) if(!rst_n
2015-10-15 20:52:28
7200
原创 fpga简易流水灯
module led_fla( output [3:0] led_out, input clk, input rst_n, input key);parameter timer = 50_000_000;reg [26:0] count;reg [3:0] rled_out;reg flag ;always @(negedge rst_n or negedg
2015-10-15 20:43:15
8039
原创 基于SpringMVC的Restful风格的增删改查--②增加员工信息
思想:点击增加员工按钮 = 》进入form表单 =》用户填入数据,提交 =》 handler接收新的员工数据,保存 =》重定向至员工列表的页面(可以显示新增加的员工信息条目)主要流程: 一. (1) 填写数据的表单使用的是Spring的from (2) 怎么使用form : ① 增加taglib <%@ taglib prefix="form" uri="http
2015-08-18 16:56:27
1203
原创 基于SpringMVC的Restful风格的增删改查--④更新员工信息
基本思想:点击某一个员工的更新链接,进入Spring的from表单,回显该员工数据 =》 submit后,交给handler做save处理 =》重定向至员工列表界面注意的点:(1) 员工的lastName不可以被修改(需要使用modelattribute技术) (2) 需要将post请求转为PUT请求(需要借助HiddenHttpMethodFilter) 具体流程以及核心代码: (1) 链接
2015-08-18 16:39:03
3808
原创 基于SpringMVC的Restful风格的增删改查--③删除员工信息
基本思想:点击链接=》员工信息填写界面(使用Spring的form表单)=》表单提交,进入handler处理=》重定向至显示所有员工的界面具体步骤:(1) 表单的建立:①导入 spring 的 taglib :<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
2015-08-17 18:34:33
3140
原创 基于SpringMVC的Restful风格的增删改查--①查找所有员工信息
项目前的准备:1.下载eclipse开放工具,我有的是ME,并且集成了SpringMVC开发的IDE,详见http://jingyan.baidu.com/article/1612d5005fd087e20f1eee10.html 2.jdk的配置,服务器tomcat的配置,语言的配置 开发项目: 1.新建web动态工程,注意要勾选web.xml文件。导入SpringMV
2015-08-16 22:40:38
3913
原创 hibernate配置
关于hibernate的配置》》》》》》》》加入log4j后更改配置文件可以不显示info.debug... 需要在控制台输出执行的sql语句,配置主配置文件,加上 true false注意是true,不是ture,特此说明
2013-08-04 17:30:44
591
原创 hibernate 生成表
关于hibernate的使用,在看视频的时候,咯啊是是用User建的一个实体类,用来映射生成表的。可是,运行时老是报User关键字错误,这里申明一下,我用的是sql server2008的数据库。最后才发现原来User是我的数据库的关键字,事先自己无法理解数据库的为什么和User有关系,其实当我打开sql的权限的时候发现里面有一个用户的名字里包含了User,这就是包User错误的关键。
2013-08-04 13:05:21
894
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人