- 博客(23)
- 问答 (1)
- 收藏
- 关注
原创 FPGA跨时钟操作
(* ASYNC_REG = "TRUE" *) 约束 之后,不会对该寄存器周围的逻辑进行优化,会经可能的把寄存器放置在很近的空间,方便实现跨时钟域。1、二级采样,只适用于慢时钟到快时钟,主要目的是消除亚稳态的传递。
2024-07-10 17:41:30 150
原创 HLS *out 探索
data 端口 表示 一 wire 类型接口,虽然c层面接口只有一个端口 *data,但是转换对应的verilog接口逻辑是 data_out = data_in,会自动出现输入端口和输出端口、输出端口valid,值得注意的是:valid是一个 伪时序逻辑,数据端口都是 wire。从code发现 ,hls将 data*10 = data*8 + data*2 ,使用移位实现。*dout 和 *din 都是 wire类型接口,*dout的valid 是一块 伪时序逻辑,整块逻辑为组合逻辑。
2024-07-05 09:55:56 301
原创 C语言 可变参数列表
这个头文件声明一个 va_list 和 三个 宏 va_start va_arg va_end,可变参数列表是通过宏来实现的,这些宏定义在 stdarg.h头文件中,它是标志库的一部分。C语言 可变参数列表。
2024-07-02 16:06:47 121
原创 Simulink HDL code 设置
绑定vivado:hdlsetuptoolpath ('ToolName','Xilinx Vivado','ToolPath','D:\vivado2018\Vivado\2018.2\bin\vivado.bat')
2024-06-26 16:01:26 268
原创 HLS bram 接口 在空闲状态 RTL仿真出现 x 问题
1、当多个BRAM中,有两个BRAM端口同时访问同一块内部数据,RTL仿真 在空闲状态出现不定态。
2024-06-19 11:18:46 180
原创 HDL code 常用约束
ram_extract 是针对RAM的一项综合约束,它的作用是 是否从HDL code中提取RAM结构,采用该约束,编译器会对HDL code 进行分析,看内部是不是跟RAM功能吻合的结构,如果存在这种结构,将采用相对应的方案来实现RAM,否则很可能用寄存器的方式来实现这部分存储code。当启用安全模式实现状态机,当出现非法状态时,编译器会采用自身的规则选取状态机的某一个状态作为默认的恢复状态,这个状态有可能是初态、也有可能是上电后的默认状态,该约束就可以显示的说明这个状态。
2024-04-13 14:06:07 457
原创 双端口BRAM 分析
双端口BRAM 具有两套独立的时钟、数据、地址、控制信号,允许两套信号独立的对RAM进行随机地址访问。虽然双口BRAM两套接口都可以操作ram,但是操作的都是同一片空间。两套信号都可以对RAM进行读写操作。2、简单双端口BRAM。1、真双端口bram。
2024-04-11 11:52:11 335
原创 BRAM 读写模式分析
异步读模式不需要操作 en 信号,当we信号有效时,RAM写入当前的din,无论何时,dout都会根据addr输出bram中的数据,当读写冲突发生的时候,dout会先输出旧的值,写操做完成之后输出写入的值。是一种读、写互不干扰的模式,他的HDL code 描述如下。采用实际上是异步但表现上好似同步的方式读取BRAM中的数据。采用同步的方式从ram中读数据的操作模式。发生读写冲突时读优先的操作模式。发生读写冲突时、写优先的操作。
2024-04-11 10:16:37 464 1
原创 FPGA 的 复位
2、异步复位 的 复位信号控制的各个寄存器和复位信号信号源之间的 data_path delay层次不齐,当异步复位信号释放的时候,一部分寄存器在时钟有效沿之前完成复位,另一部分寄存器在时钟有效沿之后完成复位,会出现一个clk的偏差。在FPGA设计中,可以通过寄存器的复制来解决复位信号大扇出,假设FPGA中有1000个寄存器需要复位,可以对复位信号复制10个,每个衍生复位信号去复位附近的100个寄存器。只要复位信号到来,就立即执行复位操作,直到复位信号结束才停止复位,异步复位是持续的。
2024-04-10 10:38:44 934
原创 Verilog 赋值冲突 分析
在时序逻辑中、不存在真正的反馈,位于时序逻辑的串行语句中出现赋值冲突时,按照HDL 语言的执行思路,写在最后面的一条语句才是有效的。Verilog 的 变量 使用 为 一写 多读 ,赋值冲突 违反了 一写 ,多条赋值语句 对 同一变量赋值会导致赋值冲突产生。2、 反馈在前的组合串行逻辑赋值冲突。1、无反馈的组合串行逻辑赋值冲突。3、反馈在后的组合串行逻辑赋值。
2024-04-08 15:45:15 289
原创 HLS 1 + 1 = 1
对 1bit的临时变量 声明 bool 或者uint1(ap_uint<1>)都如此。u32 数 a,u32数 b,对 a b 做位加法 ,但是 有一个小demo 1 + 1 = 0;
2024-01-30 20:47:00 355
原创 coe语法
1111,1111,1111,1111,1111,0000,0101,0011,0000,1111,1111,1111,1111,1111,1111,1111;
2023-12-14 17:47:51 48
原创 hls for循环
verilog code FSM:增加 pipline之后,状态机增加一个end状态,end状态无条件切换到IDLE,在end状态 ip产生ap_done、ap_ready 为high,同时在loop之外,增加一个 initiation interval。若约束资源为simple bram,约束loop为unroll,状态增加为100个状态,每个状态写入一个数。demo发送一百个数,状态有50个状态,bram变成一个双口bram(A port B port),每个port输出50个数。
2023-12-04 14:33:39 92
原创 reset_project && reset_project -exclude ip
reset_project 用于重置当前项目重置为开始状态,清除在综合,模拟,实现和write_bitstream过程中创建的各种输出文件,包括临时文件。通过上面的操作之后,一些IP的文件操作,比如从别人哪里拷贝的工程,一些文件权限不够、之前生成了一些文件新编译后不能替换源文件等操作、一些不知名的报错,无法解决等问题,都可以通过上面的操作尝试解决。reset_project和reset_project -exclude ip。-exclude_ips : 不去清理IP 目录下的文件。
2023-05-10 11:38:50 105
空空如也
Microblaze is held in reset
2022-12-13
关于#ar#的问题,如何解决?
2022-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人