qq_46475176
这个作者很懒,什么都没留下…
展开
-
面试题-Java八股文
Java 反射机制是指在程序的运行过程中可以构造任意一个类的对象、获取任意一个类的成员变量和成员方法、获取任意一个对象所属的类信息、调用任意一个对象的属性和方法。运行时多态的实现:主要依靠方法表,方法表中最先存放的是 Object 类的方法,接下来是该类的父类的方法,最后是该类本身的方法。覆盖:覆盖是指派生类重写基类的方法,使用基类指向其子类的实例对象,或接口的引用变量指向其实现类的实例对象,在程序调用的运行期根据引用变量所指的具体实例对象调用正在运行的那个对象的方法,即需要到运行期才能确定调用哪个方法。原创 2023-10-25 21:39:05 · 169 阅读 · 0 评论 -
FPGA数字时钟代码实现(可暂停调数)
/因为改成clk触发了,触发频率变大,如果不是设置置零,则会在下一个always语句中,多次触发flag2为1 的情况,疯狂计数(最开始写法为flagx触发时候,没有考虑到这种情况,现在改为clk,则需要考虑到不进位时clk上升沿来了触发的情况)else if(delay_cnt3==21'd1&&value_key3==1'd0)//注意(当复位后,置了MAX值,所以会导致计数一次(此时没有抖动),会造成flag10跟flag9置1一次,进而导致暂停时候复位,会让调数的位置默认加一和数字默认加一)原创 2023-10-25 21:20:31 · 248 阅读 · 0 评论 -
基于FPGA图像处理系统的设计注意点
这里的软件是指DSP、CPU等等,硬件是指FPGA;一般结构规则、计算量大的操作如sobel算子、均值滤波可以采用硬件进行,不规则的动态可变长度循环的底层算法由软件进行。图像处理的算法中,大部分需要采用浮点数运算,而浮点数运算在FPGA中是非常不划算的,因此需要转换成定点数计算,此时会设计到浮点运算转定点运算时精度下降的问题。用软件的图像处理环境可以使用大批量的图像样本进行测试及调试算法,再将算法映射到硬件上,这样大大节省了硬件调试周期。1.将算法开发和FPGA实现分离。3.软件和硬件的合理划分。原创 2023-10-25 20:50:48 · 167 阅读 · 0 评论 -
中值滤波原理
1. 统计这N个数的最高(M-1)位 0、1的个数分别为num0_M-1、num1_M-1. 若num0_M-1 > N/2 则可以判断中值在 M-1位为0的数 中。3. 在2.中判断出的 num1_M-2 个M-1位为0、M-2为1的数中继续统计 M-3 位 0、1的个数分别为 num0_M-3、num1_M-3.2. 在1.中判断出的 num0_M-1 个M-1位为0的数中继续统计其第M-2位 0、1的个数分别为num0_M-2、num1_M-2.有N个位数为M的无符号二进制数求他们中的中值。原创 2023-10-25 20:35:04 · 233 阅读 · 0 评论 -
图像边缘检测技术
它可以帮助我们更好地理解图像中的结构和特征,为后续的图像处理和分析提供基础。边缘是图像中明暗变化显著的位置,它标志着物体的边界。边缘检测的目标是找到这些边缘并将其突出显示,使得我们可以更清晰地观察和分析图像中的物体。当然,边缘检测并不仅限于Canny算法,还有其他算法如Sobel、Laplacian等可以实现边缘检测。然后,计算图像的梯度。最后,通过设置合适的阈值,我们可以将边缘像素提取出来,并将其显示或标记在图像上。图像边缘检测是图像处理中常用的技术之一,用于提取图像中物体的轮廓或边缘信息。原创 2023-08-28 21:41:05 · 214 阅读 · 0 评论 -
基于FPGA的IIR滤波器的实现— MATLAB函数实现
根据MATLAB提供的多种设计IIR数字滤波器的函数设计滤波器,采用根据原型转换法原理实现的四种IIR设计函数:butter、cheby1、cheby2、ellip、yulewalk一、采用butter(巴特沃斯函数)设计butter函数可以直接设计各种形式的数字滤波器,同时也可以设计模拟滤波器。butter形式:butter函数可以设计低通、高通、带通、带阻等各种形式的滤波器。原创 2023-08-20 22:21:19 · 224 阅读 · 0 评论 -
基于FPGA的LMS自适应滤波器
设计中,最重要的就是滤波器的系数。而且生成滤波器系数以后,滤波器的幅频响应,相频响应都已经被固定,如果要修改滤波器的参数,必须要从重新对滤波器的系数进行计算和量化并生成coe文件,才可以更改滤波器。所以基于以上原因,可以设计一个自适应的数字滤波器 ,通过计算输出信号和期望信号的误差来进行对滤波器系数的更新。(要注意加噪后的量化信号,有的时候会出现错误(在vivado中无法读取),所以在生成的txt文件中自行修改错误的数据)要将所生成的正弦波和加噪后的正弦波量化,在后面的vivado中会用到该量化好的数据。原创 2023-08-20 16:31:33 · 295 阅读 · 0 评论 -
FPGA实现UART串口通信流程及代码实现
要在FPGA上实现串口通信,您需要使用FPGA的IO引脚来连接串口通信模块,例如UART(Universal Asynchronous Receiver Transmitter)模块。这只是一个简单的示例,具体的实现可能因具体的FPGA平台和需求而有所不同。可以根据自己的需求和所使用的FPGA平台进行相应的修改和调整。实现数据传输:在FPGA的设计中,使用UART模块的接口来实现数据的发送和接收。配置FPGA引脚:使用FPGA开发工具,将FPGA的引脚配置为串口通信所需的输入和输出引脚。原创 2023-08-20 16:20:58 · 759 阅读 · 0 评论 -
python实现定时任务的8种方式
优缺点:可以实现异步任务,是非阻塞的,但当运行次数过多时,会出现报错:Pyinstaller maximum recursion depth exceeded Error Resolution 达到最大递归深度,然后想到的是修改最大递归深度,同时支持多线程应用程序,在每个任务执行后会立刻调用延时函数,以确保其他线程也能执行。APScheduler是Python的一个定时任务框架,用于执行周期或者定时任务,该框架不仅可以添加、删除定时任务,还可以将任务存储到数据库中,实现任务的持久化,使用起来非常方便。原创 2023-08-20 11:35:34 · 433 阅读 · 0 评论 -
FPGA实现信号中值滤波流程及代码示例
这个示例中,使用了一个大小为M的窗口来存储输入信号的采样值。每当有新的采样值进入窗口时,窗口中的值会向后移动一位,并对窗口中的值进行排序。排序后的窗口中的中间值(如果M为奇数)或中间两个值的平均值(如果M为偶数)被输出作为滤波后的信号。中值滤波算法的基本思想是将输入信号的一组采样值按大小排序,然后选择中间值作为输出。在FPGA中,可以使用硬件描述语言(如Verilog或VHDL)来描述排序模块,并使用适当的排序算法来实现。连接输入和输出接口。将输入信号连接到排序模块,并将中值选择模块的输出连接到输出接口。原创 2023-08-20 11:19:31 · 455 阅读 · 0 评论 -
基于AD8232设计心电采集电路原理图
原创 2023-07-12 13:27:39 · 1923 阅读 · 1 评论 -
利用FPGA设计FIR滤波器时注意事项
在matlab中导出coe文件时,采样率不必过高,这样会使同等储存容量的IP核无法有更高的滤波器阶数,从而不能很好的进行滤波。原创 2023-06-13 13:36:56 · 124 阅读 · 0 评论 -
利用FPGA实现DDS双通道信号发生器
rst_n(rst_n),//key_state[2]&key_state[3]调整相位时让两个DDS模块重新加载。//320度,计算所得为3640.8888888888889。//120度,计算所得为1365.333333333333。//300度,计算所得为3413.333333333333。//key_flag触发为一个时钟的脉冲形式。//使用按键实现8种频率和相位的循环切换。key_filter inst_key_filter0//对四个按键进行消抖。原创 2023-06-03 15:25:51 · 173 阅读 · 0 评论 -
FPGA开发流程
时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的,唯一的差别是:时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中时序仿真后的信号加载了时延,而功能仿真没有。也就是说,被综合的文件是HDL 文件(或其他相应文件),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。原创 2023-01-28 19:07:48 · 676 阅读 · 0 评论 -
FPGA实现LCD显示屏的驱动
-----------------有效显示------------------------------//-----------------显示数据------------------------------//-------------------输出端口定义-------------------------//------------------标记显示区域--------------------------///垂直显示上消隐区8行。原创 2023-01-10 16:23:08 · 607 阅读 · 0 评论 -
FPGA 面试题及答案
在第1个缓冲周期,将输入的数据流缓存到“数据缓冲1”模块,在第2个缓冲周期,“输入数据选择控制”模块将输入的数据流缓存到“数据缓冲2”模块的同时,“输出数据选择控制”模块将“数据缓冲1”模块第一个周期缓存的数据流送到“后续处理”,模块进行后续的数据处理,在第三个缓冲周期,在“输入数据选择控制”模块的再次切换后,输入的数据流缓存到“数据缓冲1”模块,与此同时,“输出数据选择控制”模块也做出切换,将“数据缓冲2”模块缓存的第二个周期的数据送到“后续处理模块”,如此循环。4个时钟读一个数据,需要80ns;原创 2023-01-01 18:57:47 · 559 阅读 · 0 评论 -
把ad采集数据的波形和幅值显示在lcd屏幕上-FPGA
/双口RAM读使能信号。//波形显示前/背景色。原创 2022-08-21 23:03:14 · 1598 阅读 · 0 评论 -
MATLAB设计,FPGA实现,联合ISE和Modelsim仿真的FIR滤波器设计
因为我们在将滤波器的系数由小数变成整数的时候,对这些系数整体扩大了32767倍,再做了一个四舍五入(影响滤波器精度),对滤波器的系数扩大的倍数越大,四舍五入对精度的影响就越小,但是系数乘的倍数越大,FPGA在做乘加运算也就越复杂,也就越耗时,越耗资源,因此我们需要找一个平衡点。这里为了将信号的幅度变回原始的幅度(尽可能的靠近),我们只能通过将低位截取掉,截取低位相当于对数据做除法(除2),所以前面的滤波器系数的扩大倍数我们一定要用2^N,这样我们在这里还原信号幅度的时候,只需要截位就能达到目的。...原创 2022-08-09 22:09:36 · 675 阅读 · 0 评论 -
FIR滤波器设计(2)——Vivado调用IP核设计FIR滤波器
在上一讲中设置matlab滤波器参数时是32MHz采样频率,所以此处选择输入采样时钟为32MHz,为了方便起见,此处设置系统时钟为32MHz(实际工作中系统时钟不是这个频率的,可以通过PLL等获得32MHz,此处我们只做仿真,系统时钟可以通过testbench任意设定);4处配置输入数据的格式,此处保持默认,输入有符号数,16位宽度,如果输入的要滤波的数据不是该配置,可以点击5处的正方形,点击之后对应的方框有灰色变成白色,可以进行修改里面的参数;2处设置滤波器系数的格式,...原创 2022-07-22 09:04:05 · 3127 阅读 · 0 评论 -
FIR滤波器设计(1)——利用matlab的fdatool工具箱设计FIR滤波器参数
低通(Lowpass),FIR滤波器,窗函数设计(Window),采用布莱克曼窗(Blackman),99阶(会有100个系数,这个是固定的,N阶FIR需要N+1个系数),抽样频率32MHz,通带频率1.5MHz,适用窗函数时截止频率不需要设定,根据选定的窗函数和阶数决定截止频率。,量化之后在4MHz以后的阻带衰减不如原来的衰减大,但是实际上量化后也能衰减到-100dB,从幅度上来讲是原来的1/(10^5),这个衰减程度也已经足够了,所以使用16位量化对于滤波器的滤波效果几乎没有什么影响。...原创 2022-07-22 08:52:05 · 1993 阅读 · 0 评论 -
FPGA—奇偶数分频和小数分频代码例程
奇数分频比偶数分频复杂一些,当不要求分频的占空比时,对输入时钟clk上升沿计数,可以设置两个计数的翻转点,一个是(N-1)/2,一个是(N-1),计数到(N-1)时输出时钟翻转且将计数器清零,假设计数器计数0~(N-1)/2区间输出低电平,则输出时钟的低电平有(N-1)/2+1个clk周期,高电平的计数是(N-1)/2+1~(N-1),共(N-1)/2个clk周期,可见不是50%占空比。偶数分频比较简单,只是注意时钟翻转的条件是(N/2)还是(N/2)-1,非阻塞赋值在下一个时钟才会更新值。...原创 2022-07-22 08:33:52 · 369 阅读 · 0 评论 -
基于FPGA的IIR型滤波器设计
因此,级联型结构具有一定的独立性,可以准确实现H(z)的特性要求,也便于调整。系数组b对应H(z)中的分子多项式,a对应于H(z)中分母多项式,前者实现滤波器的零点,后者实现滤波器的极点。对于IIR滤波器的实现有很多种方式,包括直接型、级联型和并联型等。其中直接型是最基本的一种结构,级联型是一种较为容易实现和高效的方式。wire[150]a1_1_1,a1_2_1,b1_1_1,b1_2_1;//IIR滤波器的系数。//设计一个8阶的IIR滤波器的verilog程序代码。...原创 2022-07-14 22:04:21 · 1044 阅读 · 0 评论 -
FPGA里两个数的大小直接进行比较就可以吗?
定义了2个常量parameter signed [15:0] hight_threshold = 500;parameter signed [15:0] low_threshold = -500;和一个寄存器比较reg signed [15:0]data,当data 为-80时使用下边的判断就是不行,总是成立if(data > hight_threshold || data < low_threshold)最后改成...原创 2022-07-12 17:50:45 · 1124 阅读 · 0 评论 -
Verilog中for语句的使用
在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别。在Verilog中除了在Testbench(仿测试激励)中使用for循环语句外,在Testbench中for语句在生成激励信号等方面使用较普遍,但在RTL级编码中却很少使用for循环语句。主要原因就是for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,每条执行语句并不能有效地复用硬件逻辑资源。for语句循环几次,就是将相同的电路复制几次,下面举几个for循环改写代码的例子,.原创 2022-07-09 10:54:34 · 1795 阅读 · 0 评论 -
HOG+SVM实现行人检测
import cv2import numpy as npdef is_inside(o, i): ''' 判断矩形o是不是在i矩形中 args: o:矩形o (x,y,w,h) i:矩形i (x,y,w,h) ''' ox, oy, ow, oh = o ix, iy, iw, ih = i return ox > ix and oy > iy and ox + ow < ix + iw and oy + oh < iy + ihde原创 2022-07-08 13:47:06 · 1013 阅读 · 0 评论 -
用神经网络实现手写数字识别
import tensorflow as tfimport tensorflow.examples.tutorials.mnist.input_data as input_datafrom time import timemnist = input_data.read_data_sets("mnist_data/",one_hot = True)mnist.train.num_examplesmnist = input_data.read_data_sets("mnist_data/",one_hot =原创 2022-07-08 13:43:47 · 103 阅读 · 0 评论 -
解决分频模块modelsim下仿真输出为stx的错误
module uart_clkdiv(clk, rst_n, clkout);input clk;input rst_n;output clkout;reg clkout;reg [15:0] cnt;always @(posedge clk or negedge rst_n)begin if (!rst_n) begin cnt原创 2022-07-08 13:30:08 · 916 阅读 · 0 评论 -
基于FPGA的4位减法器设计及仿真代码
1. 设计要求: 设计一个4位减法器,采用结构化设计。该设计名为sub_4bit,其顶层设计如下图所示,有三个输入量:被减数x[3:0],减数y[3:0],低位向本位的借位bin;有两个输出量本位差dif[3:0],本位向高位的借位bout。数学表达式为:(x + bout) – y – bin = diff 2. 设计实现 4位减法器由四个全减器构成,1位全减器由两个半减器和1个或门构成,如下图所示。(1) 半减器: 半减器用于计算两个二进制数x和y的剑法,输出结果d和向高位的借位bo,没有考虑低位原创 2022-07-07 22:07:15 · 3215 阅读 · 0 评论 -
算术编码算法的程序实现
本实验通过编程实现简单的算术编码解码过程,加深对视频编码中熵编码原理及过程的理解,锻炼理论与实践相联系的能力。理解算术编码的有关原理,尤其是自适应二元算术编码的原理及编码过程。给定一个符号序列,其概率分布未知,要求使用自适应二元算术编码算法,在Visual Studio 开发环境下,通过C/C++编程,对该符号序列进行编码;并对编码输出码流进行解码。010110101111100110111100100011111111110100101101101101101◆编码时,设置两个专用寄存器(C,A):C寄存原创 2022-06-27 17:22:11 · 928 阅读 · 1 评论 -
IGMP协议软件开发实验
实验3:1) 准备两台机,装linux系统。两机设置好IP后均运行 route add -net 224.0.0.0 netmask 224.0.0.0 dev eth0添加到组播组2) 运行make编译3) A机运行./server4) B机运行./client服务端server.c代码如下:/**broadcast_server.c - 多播服务程序*/#include #include #include #include ......原创 2022-06-27 17:05:49 · 298 阅读 · 0 评论 -
Linux网络设备驱动开发实验
实验2.1:cd /madc/vnetdev/make cleanmakeinsmod netdrv.koifconfig vnet0 upgcc rawsocket.c./a.outifconfig vnet0 mtu 1222cat /var/log/messagesifconfig vnet0 downrmmod netdrv.koventdev.c代码如下:#ifndef __KERNEL__#define __KERNEL__#endif#ifndef MODULE#define MODULE#e原创 2022-06-27 17:04:26 · 785 阅读 · 0 评论 -
多路IO用法
1) 执行命令gcc –o ioselect_server ioselect_client.c生成可执行文件ioselect_server2) 执行命令gcc –o ioselect_client ioselect_client.c生成可执行文件ioselect_client3) 执行ioselect_server4) 分别在两个终端执行ioselect_client5) 分别在两个客户端发送消息,查看结果服务端ioselect_server代码如下:#include ....原创 2022-06-27 16:51:51 · 119 阅读 · 0 评论 -
多线程服务器编程
1) 执行命令gcc –o multi_thread multi_thread.c生成可执行文件multi_thread。2) 执行可执行文件multi_thread。3) 另打开两个终端,每个终端分别执行tcp_client可执行文件4) multi_thread可执行文件终端会显示出当前的连接信息,并接收和转发客户端发送的数据信息。multi_thread.c代码如下:#include #include #include ......原创 2022-06-27 16:49:02 · 141 阅读 · 0 评论 -
高级套接口编程(选项和控制信息)
1) 执行命令gcc –o advanced_socket advanced_socket.c生成可执行文件advanced_socket2) 执行可执行文件advanced_socket会输出当前选项中的配置信息。advanced_socket.c代码如下:#include #include #include #include #include #include ......原创 2022-06-27 16:46:48 · 679 阅读 · 0 评论 -
RAW高级套接口实验
1) 分别打开终端编译tcp_server.c,tcp_client.c生成对应的可执行文件tcp_server,tcp_client。2) 另行打开终端编译raw.c生成可执行文件raw。3) 运行可执行文件raw。4) 在其他终端中分别运行可执行文件tcp_server,tcp_client。5) 客户端输入信息,服务端接收并返回给客户端,此时产生数据包,在raw终端产生数据。raw.c代码如下:#include #include ......原创 2022-06-27 16:43:18 · 908 阅读 · 0 评论 -
TCP套接口通信实验
1) 执行命令gcc –o tcp_server tcp_server.c生成可执行文件tcp_server。2) 执行命令gcc –o tcp_server tcp_client.c生成可执行文件tcp_client。3) 执行tcp_server4) 执行tcp_client5) 客户端输入内容6) 服务端接收内容服务端tcp_server.c代码如下:#include #include #include ......原创 2022-06-27 16:38:53 · 130 阅读 · 0 评论 -
UDP套接口通信实验
1) 执行命令gcc –o udp_server udp_server.c生成可执行文件udp_server。2) 执行命令gcc –o udp_server udp_client.c生成可执行文件udp_client。3) 执行udp_server4) 执行udp_client5) 客户端输入内容6) 服务端接收内容服务端udp_server.c代码如下:#include #include #include #in......原创 2022-06-27 16:34:02 · 222 阅读 · 0 评论 -
详解FIR滤波器和IIR滤波器的区别
数字滤波器广泛应用于硬件电路设计,一般分为FIR滤波器和IIR滤波器。下面说一下它的具体区别一、FIR滤波器定义:FIR滤波器是有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。特点:FIR滤波器的最主要的特点是没有反馈回路,稳定性强,故不存在不稳定的问题;FIR具有严格的线性相位,幅度特性随意设置的同时,保证精确的线性相位;FIR设计方式是线性的,硬件容易实现;FIR原创 2022-06-26 18:59:59 · 1673 阅读 · 0 评论