- 博客(26)
- 收藏
- 关注
原创 AXI stream协议简易实现(基于System verilog)
axi stream协议很简单,就是传输数据,不像axi4和axi lite有多个通道,只有一对握手信号tready和tvalid,tdata数据流有三种类型,是根据TKKEP和TSTRB决定的,tlast是最后一个数据的标志。代码中并没有考虑传输类型,仅仅是为了熟悉stream协议以及interface的使用。最近再看AXI协议的内容,对axi stream进行简易的实现,便于以后回忆。2. 在实例化带有interface的模块时,需要传进去的是接口的。1.modport的端口方向:需要和声明的。
2023-08-18 22:25:18
743
原创 C/C++ 随笔
表示连接作用,比如,#define CON(x,y) x##y,表示 x和y接在一起。:比如 #define PR(…) printf(_
2023-07-26 00:15:42
65
原创 位结构体实现C中的长度截断+符号位扩展
在做一生一芯的过程中,有一个隐蔽的bug找了好久,发现是由于不懂位结构体的操作。为了便于回忆,简要进行分析。
2023-07-06 01:18:28
152
原创 序列检测器(移位寄存器实现)
序列检测器可以用状态机实现,可以是摩尔(输出只与当前的状态有关),也可以是米利(输出不仅与当前状态有关,还和当前输入有关)。看到一篇帖子是通过移位寄存器实现的,所以就自己试了试,记录一下。相比于状态机实现,移位寄存器的思想很简单,就是比较,不停的比较,但是会带来一些功耗上的损失,与状态机实现的功耗相比如何,还需要进一步验证,但是确实可以节省面积。设置一个移位寄存器,每个上升沿都要左移一次(一定是左移,不能是右移),然后与10010作比较。明白了核心思想,代码和测试激励如下。
2023-06-02 14:38:35
658
原创 Makefile 笔记(make的运行)
Make 的默认行为是执行Makefile的第一个target,该目标一般会带起多个目标的执行。目标中有=,或者-打头的不能指定为终极目标,因为这些字符的目标会被解析成命令行参数或者变量。-C <dir> 指定读取Makefile的目录,如果有多个“-C”参数,make 的解释是后面的路径以前面的作为相对路径,并以最后的目录作为被指定目录。比如“make -C ~hchen/test -C prog”等价于“make -C ~hchen/test/prog”。可以使用多个“-I”参数来指定多个目录。
2023-05-25 19:37:34
515
原创 Makefile 笔记(使用变量)
如果在命令行参数中代入该变量,环境变量的值会被覆盖。如果make时指定了-e,环境变量会覆盖Makefile中定义的变量。等号右侧的变量可以是Makefile文件后面的内容,就有可能导致递归,所以要使用 :=,表示只能使用前面的变量。也可以为某个目标target设置局部变量,该变量会作用到有这个目标所引发的所有规则区域。Makefile中定义的变量都是全局变量,$@ $^…类似C的define,强烈建议变量的引用使用括号,比如 $(var)
2023-05-22 20:34:19
150
原创 RISCV指令同步与AXI总线的Exclusive机制(个人理解)
LR指令,访问内存地址为(x20)的区域,load指令,同样访问(x20)的内存地址,如果没有其他master访问该地址,x11返回0,并将x23加载到内存地址(x20)中,x11是否为0,判断是否为原子访问,如果为原子访问,将(x20)地址的内存放在目的寄存器x10中。RISCV指令同步与AXI总线的Exclusive机制有相同之处,都是先发起读内存操作,再写内存之前,判断是否有其他master对该地址进行了写操作,如果有则回应OKAY,表示独占访问失败,交给master再次进行传输或者其他行为。
2023-05-22 14:47:07
701
原创 Makefile 笔记(书写命令)
有可能会终止整个make的执行;但是有时候命令出错是允许的,所以要在命令前加上“-”,表示忽略命令的出错。命令顺序执行,如果想要当前的命令在下一行使用,需要将下行命令放在当前行,并加上“;-k 表示命令出错时,终止该命令执行,但是继续执行其他规则。export var # 声明该变量传递给子make文件。make -w 进入或者退出目录时会有提示。-i make会忽略所有出错的命令。默认使用/bin/sh标准执行命令。或者通过命令行参数的方式,
2023-05-22 00:16:17
34
原创 系统芯片设计SOC (GPIO&UART)
GPIO外设中有的会有防抖动的功能debounce, 施密特触发器可以滤除小脉冲小毛刺,但是对于大毛刺施密特电路是无效的,这时需要debounce电路,多次采样,如果不一样则滤除。GPIO不能模拟UART协议,因为UART协议是异步通信的,每一位数据的时间都是严格要求的。复杂的UART协议,还有握手信号,用来保证通知通信双方,当一方没有能力处理数据时,是否还要继续发送数据。②输入连接到MOS的栅上时,如果输入没有驱动,会产生大电流,增加功耗。在通信协议中,为什么有些用异步,比如uart,而不用同步呢。
2023-04-15 21:49:56
304
原创 linux 常用命令
压缩成.tar.gz文件: tar -czvf file.tar.gz files。压缩.tar.bz2文件: tar -cjvf file.tar.bz2 files。压缩成.tar文件: tar -cvf file.tar files。解压.tar.bz2文件: tar -xjvf file.tar.bz2。解压.tar.gz文件: tar -xzvf file.tar.gz。解压.tar文件: tar -xvf file.tar。
2023-03-30 20:16:42
52
原创 系统芯片设计笔记 fifo&watchdog
串并转换一般用来各种低速通信协议中,比如UART, SPI, I2C等。UART的传输速率有9600,38400,191200等,K级别,CPU频率是M级别,串并转换可以作为数据缓冲模块,提高数据传输效率。
2023-03-21 10:59:02
308
原创 sdc--- input_delay和output_delay的设置和分析
design 需要和外界交互,有时候输入或者输出是组合逻辑,为了保证数据被正确采样,需要考虑输入和输出port的timing。
2023-03-15 20:05:13
616
原创 时钟抖动和时钟偏斜 jitter&skew
首先,正的时钟偏斜是有利于建立时间的,因为我的接收时钟沿是晚到达的,所以有利于我数据的提前建立。但是对于我的保持时间是不友好的。• 在设计中通常要尽力减小时钟偏差,但有时也利用它来解决竞争。时钟抖动对于电路时序总是坏的,而时钟偏斜要单独分析。负时钟偏差会带来性能的降低,正偏差会使竞争更容易发生。• 时钟抖动总是导致性能降低并增加竞争发生的风险。• 在设计中总是尽力减小时钟抖动。
2022-11-05 16:01:36
302
原创 对于逻辑努力的一点理解
在确定NOR和NAND的尺寸时,我们考虑的是让他们电阻与对称反相器相等,但是并没有考虑电容前后相等,增加宽长比势必会改变输入电容。对于NAND来说,输入电容变为4Cuint,也就是反相器的三分之四,NOR为反相器输入电容的三分之五。根据前面等效的方法,两个逻辑门的输出电阻相同,g不同,那么他对前级的负载是不同的,显然,NOR的负载更大一些。本征时间常数只与逻辑门的结构有关,从公式可以看出尺寸系数S不影响τ的结果,一旦逻辑门的结构确定了,与尺寸大小无关。在这个图中,也涉及到了逻辑努力的概念。
2022-10-23 11:18:01
3549
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人