- 博客(33)
- 收藏
- 关注
原创 在generate语句中使用always块实现组合逻辑导致仿真与综合结果不一致
大概背景是,我需要在 generate 语句中按照 genvar 的值选择性地生成对应部件,即 generate-if,最开始我使用的下边的结构(已简化代码),先声明下,但是可以确定的是,上面这种写法是不合适的,会生成多路选择器(当然由于某些分支不会执行,综合后可能会被优化),然后我就按照下边的方式修改代码,其实也是有问题的。改成这种写法后,VCS不再报越界警告,但vivado和VCS的仿真中都显示 out[i] 的值是X,这便回到了题目中提到的。永远不会执行,因此仿真时 out[i] 的值显示为 X。
2025-04-02 10:05:46
299
原创 PYNQ2.7镜像直接升级成3.0以支持XCV(Xilinx Virtual Cable)
前段时间使用PYNQ进行开发时碰到一个很奇怪的bug,想要查看overlay实际运行时的波形,但发现似乎PYNQ的库中并没有提供在线调试的接口。后面经过查找资料发现pynq3.0中增加了对XVC的支持,但目前我使用的版本是2.7,官方提供的PYNQZ2镜像在我的正点原子领航者ZYNQ7020上无法开机,于是考虑能否在2.7的基础上直接将PYNQ升级为3.0,升级过程中遇到了一些问题,但最终可以成功支持XCV,于是写下这篇博客进行记录。
2024-12-23 17:04:20
653
原创 基于ILA+DebugBridge(XVC)的ZYNQ在线调试
前段时间使用PYNQ进行开发时碰到一个很奇怪的bug,想要查看overlay实际运行时的波形,PYNQ3.0的库中提供了在线调试的接口,但网上关于如何基于ILA+DebugBridge(XVC)对ZYNQ进行在线调试的资料太少,于是写下这篇博客进行记录。
2024-12-23 16:59:46
684
原创 Quartus 联合 ModelSim 仿真 IP 核(RAM)
本文主要介绍如何在包含 IP 核的 Quartus 项目中使用 Modelsim 进行仿真,本文基于 RAM IP 核,其他 IP 核类似。
2024-05-19 18:19:36
963
1
原创 云服务器+FRP实现内网穿透,可以远程访问本机的jupyter服务器
本文利用云服务器+FRP实现内网穿透,可以远程访问本机的jupyter服务器
2023-12-22 14:39:16
2156
1
原创 使用光线投影算法(Ray Casting Algorithm,RCA)解决PiP问题(判断点是否在多边形内部)
PiP(point-in-polygon)问题是指判断点是否在多边形内部,这是地理信息系统 (Geographic Information System,GIS) 的基本操作。点是否在多边形内部,肉眼上很容易判断,但是使用算法来解决却不是很简单。本文介绍了一种解决PiP问题的算法,并给出了其Python代码实现。
2023-11-17 20:11:05
775
原创 Linux下NC Verilog的基本使用教程
NC Verilog是Cadence公司开发的Verilog仿真工具,用于验证和调试HDL设计。本文主要对Linux下NC Verilog的基本使用进行了一个简单的介绍
2023-11-06 18:14:57
1878
原创 论文阅读 Implementation of precise interrupts in pipelined processors
如果保存的进程状态与程序执行的顺序模型(其中一条指令在下一条指令开始之前完成)相对应,则中断是精确的。在流水线处理器中,精确的中断是很难实现的,因为一条指令可能在前面指令完成之前就被启动。本文讨论了五种解决方案。
2023-10-30 22:08:02
635
7
原创 2-1VerilogHDL可综合描述原则,常见语法描述对应的硬件电路结构
逻辑综合是ASIC半定制设计流程的一个阶段,用于将基于HDL的行为描述(RTL级层次)转化和优化为纯粹的结构描述(门级网表):设计在电路级(晶体管级)进行,版图中每个器件和连线都是人工设计的,以期获得最小的芯片尺寸和最佳性能(速度、功耗):是一种约束性设计方式,能简化设计/缩短设计周期,降低设计成本,提高设计正确率,按照逻辑实现方式的不同,可以分为门阵列法、标准单元法和可编程逻辑电路法。
2023-09-28 17:38:56
931
原创 Python递归求解数独及遇到的问题与反思
在使用 Python 递归求解数独问题的时候,碰到了一个隐藏比较深的 bug,特此写下这篇文章记录下来
2023-05-03 01:11:59
431
原创 FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)
本文首先对 ASIC 和 FPGA 进行了一个对比,然后介绍了 FPGA 的基本结构,最后解释了 FPGA 实现可编程的基本原理。
2023-04-08 12:13:13
2010
1
原创 AXI4协议之AXI4-Full接口详解及实战
本文首先对AXI4总线协议进行了一个简单的介绍,然后使用vivado提供的模板创建了一个AXI4-Full Slave的接口,并生成了一个具有Master和Slave的代码实例,阅读该示例代码,进行修改后用于自己的项目。
2023-04-06 20:17:32
9551
原创 AXI4协议之AXI4-Lite接口详解及实战
本文首先对AXI4总线协议进行了一个简单的介绍,然后使用vivado提供的模板创建了一个AXI4-Lite Master的接口,并生成了一个具有Master和Slave的代码实例,阅读该示例代码,进行修改后用于自己的项目。
2023-03-25 20:31:33
14465
9
原创 Xilinx IP核 Block Memory Generator v8.4 的使用
本文主要介绍如何使用并初始化 Xilinx 提供的IP核 Block Memory Generator v8.4`,为了确保成功初始化,还对其进行了一个简单的仿真,更多细节请参考官方手册。
2023-03-19 14:54:02
9191
原创 摊还分析 (Amortized Analysis) 之聚合分析与核算法
本文首先讲述摊还分析中最常用的三种技术,即聚合分析、核算法和势能分析,最后再对动态表进行摊还分析。
2023-03-13 12:54:47
499
原创 C结构体中定义长度为0的数组的意义
C结构体中定义长度为0的数组的意义背景解释背景写这篇博客的起因是在B站看到了一个视频,于是突然想起我之前写的一个动态内存分配器中也使用了类似的方法,于是写篇博客记录一下。在动态内存分配器中定义了如下的一个结构体:typedef uint64_t sf_header;typedef sf_header sf_footer;/* * Structure of a block. * The first field of this structure is actually the footer o
2022-05-05 15:01:39
1773
原创 段错误(Segmentation fault)
文章目录背景Debug背景在使用MPI并行化矩阵乘向量的实验中,发现如果矩阵的规模规模较大时,就会导致段错误。将错误代码进行简化,如下所示/*File name: seg_error.cHow to compile: gcc -g -Wall -o seg_error seg_error.c*/#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int m, n
2022-01-03 18:02:08
1405
原创 代理服务器(Proxy)原理
代理服务器原理背景什么是代理服务器为什么会出现 `代理服务器可能有问题,或地址不正确` 的错误动手实验一下使用Python实现简陋的代理服务器运行代理服务器更改主机设置使用浏览器测试背景之所以要写这篇文章,是因为我碰到了如下的问题:在浏览器中输入网址并回车,浏览器显示说代理服务器可能有问题,或地址不正确但电脑此时是联网的,ping www.baidu.com也可以正常运行通过查找资料后,发现了问题所在:打开电脑的控制面板 -> 找到 Internet选项 -> 上方功能栏点击 连接 -
2021-12-16 12:45:19
9762
1
原创 C++求解数独问题
C++求解数独实现原理代码及其测试输出实现原理见下面代码中的注释代码及其测试输出#include<iostream>#include<vector>#include<sstream>using namespace std;/*- I used DFS to solve this problem, which is can thought as one kind of backtracking algorithm.- To implement DFS,
2021-11-30 02:10:48
341
原创 Cuckoo Hashing (布谷鸟散列)
本文主要对 Cuckoo Hashing (布谷鸟散列) 的基本原理进行描述原理综述维护两个表 T1,T2T_1,T_2T1,T2,每个表都有 mmm 个元素选择两个哈希函数 h1h_1h1 和 h2h_2h2,这两个哈希函数将输入空间 Ω\OmegaΩ 映射到 0∼m−10\sim m-10∼m−1对于元素 x∈Ωx\in \Omegax∈Ω,xxx 要么存储在 T1T_1T1 的位置 h1(x)h_1(x)h1(x) 处,要么存储在 T2T_2T2 的位置 h2(x)h_2(x
2021-11-25 20:31:32
4968
原创 MPI中常用的通信方法
MPI中常用的通信方法问题描述梯形法求解积分的串行程序使用MPI并行化使用树形结构优化通信使用MPI_Reduce优化通信使用MPI_Bcast优化通信使用派生数据类型优化通信使用结构体优化通信(类似于派生数据类型)本文总结了MPI中常用的通信方法,不包含MPI_Scatter和MPI_Gather,且不涉及对这些通信方法的详细解释,只是记录,详细解释可以参考《并行程序设计导论》问题描述为了求解函数 f(x)f(x)f(x) 在区间 [a,b][a,b][a,b] 上的积分,我们可以使用梯形法得到该问
2021-11-12 01:43:10
1947
原创 MPI点到点通信
MPI点到点通信总述阻塞通信通信模式阻塞同步发送基本原理不足阻塞就绪发送基本原理不足阻塞缓冲发送基本原理不足阻塞标准发送消息大小小于设定的阈值基本原理不足消息大小大于设定的阈值MPI_Sendrecv 和 MPI_Sendrecv_replace非阻塞通信非阻塞标准发送消息大小小于设定的阈值消息大小大于设定的阈值本文参考了链接Discussion: MPI Basic Point to Point Communication I (mtsu.edu)总述在MPI中,点到点通信分为阻塞通信和非阻塞通信。
2021-11-09 02:13:13
1836
原创 常见压缩算法
压缩算法基础压缩类型逻辑压缩(Logical Compression)和物理压缩(Physical Compression)逻辑压缩:根据数据的含义来压缩,只适用于特定的领域,比如录音物理压缩:只需要知道数据的比特位,不需要知道这些比特的含义有损压缩(Lossy Compression)和无损压缩(Lossless Compression)有损压缩:可以实现更好的压缩比例,但是解码是近似的,确切的源文本(Source text)无法还原。无损压缩:可以准确还原源文本本文聚焦phys
2021-08-05 20:25:01
4363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人