- 博客(220)
- 资源 (1)
- 收藏
- 关注
原创 关于BAR(PCIE BAR或AXI BAR)的解释
假设某BAR的默认值是xxxx_0000(这里表示8个比特位),其中低4位不可写,可操作的最低位是4,所以该BAR的大小是2^4=16字节;如果系统软件向BAR写0xAF=1010_1111,由于BAR的低4位不可写,所以写完后BAR的值仍是0xA0,而不是0xAF。2、系统软件读BAR,读到的值是0xF0,于是系统软件知道该BAR的最低可操作位是4,该BAR的大小是2^4=16字节,要求。BAR的基地址必须能被其大小整除,即BAR的基地址必须按照其大小字节对齐,比如这里必须是16字节对齐;
2025-01-24 22:40:27
321
原创 xilinx xapp1171学习笔记
0x00000000_def0c010对应的AXI地址为0x8100c010,即AXI CDMA中的TAILDESC_PNTR寄存器在AXI。即Host PC向AXI CDMA中的CURDESC_PNTR寄存器写入0x80800000,此值为AXI_PCIE_SG的基地址;1、Host PC向地址0x00000000_def0C000写入0x0A000100,即写AXI_CDMA_LITE基地址,a.Host PC在地址0x00000000_def00000处写入0x0000ccc0_c0000000,
2024-11-21 18:29:42
416
原创 基于AXI PCIE IP的FPGA PCIE卡示意图
如果在上图中的AXI互联IP上再连接一个带AXI Slave接口的BRAM控制器,这个BRAM控制器连接一个BRAM,Host PC在系统主存中分配了一些不连续的内存,Host PC可以将这些内存段的起始地址(当然要先转为PCIE总线地址)写到AXI总线上的BRAM中,这样AXI CDMA读取BRAM,将读取到的PCIE总线基地址写到AXIPCIE寄存器块中的AXIBAR2PCIEBAR_n寄存器中,这样就实现了SG DMA。通过动态改变AXIBAR2PCIEBAR_n寄存器的值,可以实现多通道DMA。
2024-11-20 23:10:09
1338
原创 Windows的FLAT内存模式
/将ds:data_label中的数据送至ax,这里data_label在数据段中虽然是0,但是经过链接器处理后,data_label将成为0~4GB的线性地址中的一个线性地址。代码段,数据段,栈段在程序被操作系统加载后,当应用程序执行时,操作系统会将CS,DS,ES等指向对应的段,这些段的基地址都是0,由于通用寄存器都是32位的,地址总线也是32位的,所以进行间接寻址时不用分段就可以寻址4GB的地址空间。保护模式下,所有段的基地址都是0,段限长是0xFFFFFFFF。
2024-06-25 10:46:54
236
原创 AXI4学习笔记
AXI4和AXI4-Lite是全双工的,读操作包括读地址通道和读数据通道,写操作包括写地址通道、写数据通道、写响应通道。AXI4(AXI4-Full)和AXI4-Lite均输入存储器映射,AXI4支持最大256个数据的突发传输,而AXI4-Lite每次只能传输1个数据。AxLEN(这里的x为R或W)表示突发传输的数据个数,在AXI4的INCR突发模式下,实际的传输数据个数为AxLEN+1。所有信号都是在ACLK的上升沿采样。WVALID/WREADY:写数据的有效性和响应端是否准备好接收;
2024-01-05 11:14:41
615
原创 Qt点击子窗口时父窗口标题栏高亮设计思路
父窗口调用findChildren得到其子孙窗口的列表,列表元素统一为QWidget*,遍历列表元素,每个元素调用installEventFilter,过滤QEvetn::FocusIn和QEvent::FocusOut事件,做相应处理即刻。
2023-12-15 13:23:10
563
原创 Verilog HDL阻塞赋值和非阻塞赋值笔记
1.begina=b;c=a;endendmodule上面的代码在vivado中综合后的电路为:2.begina
2023-10-07 12:34:33
925
原创 WDM DMA编程笔记
3、我们在AdapterControl中会调用MapTransfer,MapTransfer的作用是为执行DMA传输做准备,注意不是MapTransfer后设备就开始执行DMA了,MapTransfer后,我们可能需要写设备相关寄存器(通过WRITE_PORT/REGISTER_UCHAR之类的HAL函数),以命令设备开始DMA传输,当这样做了后,设备就开始执行DMA传输了,当执行完DMA操作后,设备产生中断,系统会调用我们在StartDevice中设置的中断处理函数。
2023-09-16 17:44:54
226
原创 一个最简verilog代码的分析
在t2时刻,D触发器1的Q输出端是0,D触发器2的Q输出端是0,则D触发器2的D输入端就是0,D触发器1的D输入端是1,此时acc=2'b00;假设在t1时刻,两个触发器的状态都是1,即acc=2'b11,此时半加器1的A端是1,则D触发器1的输入D端就是0,D触发器2的输入D端是0;在t2时刻,D触发器1的Q输出端是0,D输入端是1,D触发器2的Q输出端是1,D输入端是0,此时acc=2'b10;
2023-09-14 11:21:40
271
原创 运动控制中的轴回零
当电机运动至原点时,会触发一个事件,驱动器会将编码器置0,此时编码器位于原点,其值也为0,编码器的值与原点的数值只差为0,于是就可以实现绝对运动了,比如让电机运动到100个脉冲,若当量为1pulse/mm,则当电机运动完成后,编码器的值就是100,电机实际位置也是100mm。理论上,驱动器也可以在电机运动到限位处时产生事件,让编码器的值为对应限位的值,但是由于限位通常是运动轴的极限位置,存在不安全因素,所以,轴回零通常是让电机回到原点后让编码器置0。
2023-08-17 19:24:43
710
原创 运动控制笔记
答:点位运动指点到点的运动,点位运动包括绝对运动和相对运动,指令中都包含了目标位置(相对运动);JOG运动指点动,注意不是点位运动,JOG运动指令中没有目标位置,只要发出了开始运动命令,就一直运动,直到发出停止命令为止。1、点位运动与JOG运动的区别?
2023-08-14 09:14:44
594
原创 各种串行通信总线
485实现半双工通讯,会遇到一个问题,MCU1向MCU2发数据时,并不知道线上是否正传来MCU2数据,因为没有其他线可用来判断对方的收发状态,那么可能也会导致数据冲突。RS-232通常是指RS-232C,它有TXD和RXD,所以是一种全双工串行通信标准/协议,它对信号线的功能、电气特性、物理接口等都做了明确规定,RS-232C采用的是EIA电平,是以正负电压表示逻辑状态,其中-3~-15表示逻辑1,+3~+15表示逻辑0。TTL电平是以高低电平来表示逻辑1和逻辑0,+5V为高电平,表示逻辑1;
2023-05-31 16:04:02
670
原创 图形硬件在做什么?
Windows下的GDI函数,比如LineTo,这个函数画一条直线,我们只给它传了一条直线的终点,但是一条直线上有很多个点,这些点是由谁生成的呢?答案是CPU或GPU。如何生成这些点,这是计算机图形学考虑的事情,谁来生成这些点,是图形硬件。生成点的过程被称为绘制或渲染,而点最终需要映射到屏幕上,这个将点映射到屏幕上的过程被称为显示。绘制与显示是完全不同的概念。显示是将显存中的数据转换成电信号后点亮屏幕上的荧光粉使其发光(老式的电子枪显示器),显存中的数据则是由图形硬件生成的。
2023-05-04 15:08:46
97
原创 Windows同步I/O和异步I/O
ReadFile、WriteFile、DeviceIoControl等函数的OVERLAPPED*参数为NULL时为同步I/O,此时这些函数的内部会创建一个事件对象并等待该对象,当驱动程序完成I/O时,会调用IoCompleteRequest设置该事件对象,于是ReadFile、WriteFile、DeviceIoControl就返回。应用程序同步I/O与异步I/O的差异仅在于事件内核对象,同步I/O时,事件内核对象由ReadFile、WriteFile、DeviceIoControl函数内部创建;
2023-04-27 09:44:18
247
原创 CopyFiles.inf
用CopyFiles.inf来简要说明INF文件中的SourceDisksNames、SourceDisksFiles、DestinationDirs
2022-12-07 13:49:48
229
原创 x86实模式,加载程序为什么要将应用程序加载到16字节对齐的物理内存地址处?
x86实模式,加载程序为什么要将应用程序加载到16字节对齐的物理内存地址处?
2022-11-24 17:36:07
246
原创 Linux硬盘分区与文件系统
硬盘需要先分区,然后用文件系统对各个分区进行格式化后才能使用。在Linux系统中,格式化后的分区需要mount到某个目录下,然后用户才能访问。Linux根分区挂载到/目录下。Linux系统必须有boot分区、根分区、交换分区。交换分区不需要挂载到目录上。分区可以挂载到不同目录下,写文件默认写到根分区中,除非该文件所在目录存放在其它分区中。boot分区存放有操作系统内核、系统引导和启动所必须的文件等。
2022-11-15 10:59:31
462
原创 行为级描述与RTL级描述
行为级描述更多是关注算法,一般不考虑电路的实现和可综合,只定义输入输出关系,通常用过程语句描述硬件电路的行为(电路最终的功能)。RTL级是一种用寄存器级的描述方式来描述电路的数据流,其目的是可综合,RTL级不关心寄存器本身和组合逻辑的实现。...
2022-07-24 01:34:30
740
原创 Verilog HDL中的reg型变量的理解
reg型变量泛指这种类型的变量的值受别的信号的影响,比如选择器,输出信号受输入信号影响,当输入信号改变时,输出信号就会改变,这种影响可以称为“触发”。注意reg型变量并不是指数字电路中的寄存器,数字电路中的寄存器特指由触发器构成的存储器,是一种时序逻辑电路。...
2022-07-24 01:29:02
2411
原创 qt使用Windows经典风格
在main函数中添加:a.setStyle(QStyleFactory::create("Windows"));即可。
2022-06-16 09:42:03
476
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人