Consistent Overhead Byte Stuffing学习
Consistent Overhead Byte Stuffing学习简介Consistent Overhead Byte Stuffing(COBS)是一种实现串行链路上帧识别(数据透传)的编码算法,作者Stuart Cheshire在1997年发表的《Consistent Overhead Byte...
pytest学习笔记-1
pytest学习笔记-1pytest测试框架pytest.main()命令执行后,pytest会自动检查目录下的py文件,按一定规则匹配执行。若要自定义规则则需要在当前目录下配备配置文件pytest.ini 模块 test_*.py *_test.py 类(测试用例) Test开头,没有__init__函数 方法 test_开头 自定义匹配规则示例 1234[pytest]python_files = demo_*.py # 模块以demo_开头python_classes = Demo* # 类以Demo开头python_functions = demo_* #...
FPGA存储资源
FPGA存储资源可以用作存储功能的资源 FF(Flip-Flop)触发器资源大部分情况作为寄存器使用。 BRAM(Block RAM)Block RAM是集成在FPGA的片上资源,称为块RAM,简称为BRAM,在Xilinx FPGA中,每一个BRAM Block可以分为两个小块,以该小块为最小单元可以组合形成需求大小的RAM。 LUT distributed RAM,分布式RAM,区别于Block RAM SRL(Shift Register LUT),LUT级联形成的移位寄存器LUT本身就是用于模拟逻辑电路真值表的高速RAM,distributed RAM与BRAM相比速度更快,但由于LUT资源有限,在大容量的RAM空间需求问题上表现不如集成的BRAM。 移位寄存器相比于通过触发器构成的多个独立寄存器,灵活性较差(如不能对单个寄存器进行置为或者复位操作),综合工具通常会将单纯的移位寄存器(不涉及复杂操作)综合为LUT级联形成的SRL,移位寄存器主要用于FIFO,可以极大的减少资源消耗,但相比于使用RAM构建的FIFO,SRL...
AXIS协议学习记录-1
AXIS协议学习记录-1AXIS基本概念传输过程简单的两拍握手协议,简单的数据流通信(stream),规范的要求中大部分信号都是非必须的,复杂功能需要多种实体components参与。 当TVALID与TREADY都置位(asserted)时完成一次Transfer。 数据单元分级 Byte,AXIS的最小数据单元为字节 Transfer,一次传输事件,对应位宽数据量。对应一组TVALID和TREADY的两拍握手 Packet,传输任意量的字节,由Transfer组成,其中Transfer对应的所有数据为了保持对齐,可包含NULL字节。Packet对应了一次TLAST事件(TLAST指明Packet的边界),Packet与AXI的Butst类似。 Frame,包含数个Packet。 数据字节类型 Data byte,传输数据。 Position byte,占位符,标识相对位置,需要搭配TSTRB信号使用。 Null byte,用于对齐的inserted...
SpinalHDL 经典交通灯(状态机)
使用SpinalHDL与cocotb完成经典交通灯控制器设计需求分析 设计需求 十字路口东西、南北各有红、黄、绿指示灯,其中绿灯、黄灯和红灯的持续时间分别为 40s、5s 和 45s。对应状态机的四个状态 s0: 持续40s,东西绿灯亮,红灯和黄灯灭;南北绿灯和黄灯灭,红灯亮。 s1:持续5s,东西绿灯和红灯灭,黄灯亮;南北绿灯和黄灯灭,红灯亮。 s2:持续40s,东西绿灯和黄灯灭,红灯亮;南北绿灯亮,红灯和黄灯灭。 s3:持续5s,东西绿灯和黄灯灭,红灯亮;南北绿灯和红灯灭,黄灯亮。 添加检修功能,由单独的检修信号控制(开关量),从任何状态都可以进入检修状态,检修时间不定,但是检修结束后延迟5秒进入S0状态。 s4_0: 检修状态,红绿灯全部保持长亮,退出时开始启动定时器倒计时。 添加附加状态,通过触发信号控制,在正常工作状态下,一旦触发附加状态,当前状态会在结束后延迟30s再进入下一个状态(插入一个额外状态)。 s5_0: 保持30s,s0 -> s5_0 -> s1 s5_1: 保持30s,s1 -> s5_1 -> s2 s5_2:...
SpinalHDL 4位7段数码管模块
使用SpinalHDL编写7段数码管模块,并使用cocotb进行仿真验证实验环境 scala: 2.11.12 sbt script version: 1.10.5 Vivado 2023.2 cocotb 1.9.0 数码管扫描程序Verilog描述12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061module scan_led_hex_disp_4( input clk, rst, /* 100MHz时钟与复位 */ input [3:0] hex0, hex1, hex2, hex3, /* 显存 */ input [3:0] dp, /* 小数点 */ output reg [3:0] an, /* 片选信号 */ output reg [7:0] sseg /* 八段数码管接口 */ ); localparam...
rtt标准版的软件i2c使用
rtt标准版的软件i2c使用软件i2c配置在rtt配备的env环境中,通过menuconfig进入项目配置界面,依次选择Hardware Drivers Config -> On-chip Peripheral Drivers -> Enable I2C1 BUS (software simulation) 在使能软件i2c后,会进入i2c的scl和sda的io配置,在rtt中stm32的多类gpio(如PA、PB)被降维编码为一维id,如 PC0: $2*16 + 0 = 32$ PF1: $5*16 + 1 = 81$ 通过UI界面配置的结果,如SCL和SDA对应的io pin口,可以在rtconfig.h中看到对应的宏定义接口。 i2c设备的封装rtt中的i2c设备是对rt_device类型设备的再封装,对应i2c总线设备的类(结构体)的父类即为rt_device。 i2c总线设备结构体如下所示 1234567891011/*for i2c bus driver*/struct rt_i2c_bus_device{ ...