- 博客(112)
- 问答 (1)
- 收藏
- 关注
原创 fpga中时钟资源的使用
时钟资源在上一篇文章提到过相应模块之间的延迟最小最好用全局时钟,这个概念就涉及到时钟资源的概念。这个玩意还和全局、长线、短线、分布式有关。在一些需要严格同步的系统设计中需要搞清楚到底要用、怎么用fpga中的时钟资源。FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O引脚和内嵌的块RAM以及硬核,且其时延和抖动都最小。因此最好的时钟方案都是由专业的全局时钟输入引脚驱动单个全局时钟,再由它去驱动设计中的其他时序模块。
2022-03-19 16:21:27 1130
原创 fpga中microblaze的学习
Microblaze软核、硬核、固核在fpga的构架中,有软核的概念,同时也有固核和硬核的概念。要想搞清楚MICROBLAZE是个啥东西,就必须先搞清楚这三个的区别。网上的解释有一堆,但大都是书上copy过来的,不仅不好懂,还越说越绕。其实简单的说,软核是啥,其实就是VIVADO“编写好的v程序”,注意这个引号,实际生成的文件名后缀不是这个,因此很明显,它是里面fpga内部的多个资源(比如LUT)构成的,属于fpga门电路搭建而成的,占用fpga资源。硬核是啥,是独立与fpga芯片外的,但是为了方便
2022-03-17 22:54:07 2150 1
原创 fpga中fifo、rom、ram的使用
fifoFIFO: First in, First out 代表先进的数据先出,后进的数据后出。这是一种比较常见的存储结构,在我看来,它是和堆栈相对应的,在vivado中内置了fifo的ip核,根据 FIFO 的读写时序来写入和读取FIFO 中存储的数据。建立步骤1.点IP catalog(和cbd方式的区别在其他博客中写过了)2.由于它一般是做缓存用的,因此两边的速度通常是不一样的,所以在配置中要把它选为独立时钟块ram:3.选择存储数据格式4.切换到 Data Counts 栏目下,
2022-03-17 20:03:41 2623 1
原创 FPGA SDRAM和DDR的学习(DDR部分)
DDRDDR有几代了,目前应该最牛的是 DDR5,一般用在显存中,它的存储量大,存储的通信速率也非常高,接下来我就会在SDRAM的基础上来对DDR做一个介绍。DDR的全称Double Data Rate SDRAM,即双倍速率数据流SDRAM。DDR原理要想搞清楚DDR的原理,首先必须搞清楚DDR的时序,下面这个图给出其时序:和SDRAM相比,它多了两个信号CLK#与 DQS(数据选取脉冲)。CLK#与正常 CLK 时钟相位相反,形成差分时钟信号。而数据的传输在 CLK 与 CLK#的交叉点进行
2022-03-17 15:55:39 2853
原创 fpga中SDRAM与DDR的学习(SDRAM部分)
DDR在fpga的很多程序中都有调用DDR,其全程为“双倍数据流SDRAM”,和RDRAM都是双倍速率传输的同步动态随机存取内存。原理要想搞清楚DDR的原理,首先必须搞清楚DDR的时序,下面这个图给出其时序:...
2022-03-12 22:50:49 3333
原创 关于IGBT、MOSFET、BJT的开关工作特性
关于IGBT、MOSFET、BJT的开关工作特性的基本思想最近一直在弄实验室一个金属离子源的控制板,其中有一个模块需要完成一个恒流源的可控输出,其负载是金属离子源的远控电流输入口,考虑到金属离子源的输入负载很大,因此输出需要的功率会比较大,考虑了BOOST输出电路来实现一个电压源的输出,通过一个小采样电阻来采集负载端的电流形成反馈,通过反馈来实现恒流的功能。MOSFET的驱动基本电路如下:由于我图腾柱输出电路的电压一直不对,因此学习了一下关于IGBT、MOSFET、BJT(也就是三级管)实现饱和与截
2022-01-14 19:27:38 2290
原创 函数指针和指针函数区别
1.什么是指针函数? 其实就是返回值是指针类型的函数,与一般函数无异,只是需要理解返回的值是指针,即和地址相关。2.什么是函数指针? 可以这么理解,就是用来联系函数的。(一般的指针是用来连续数据的),这里的指针在取了*后之后可以代表相应的函数。...
2021-12-16 23:02:26 78
原创 添加公式结点和事件结构理解
1.关于公式结点,必须要弄清楚输入输出变量是什么,具体的代码依照C语言格式来进行。2.关于事件结构:事件是瞬时发生的,如果是需要长时间发生的请一定要用条件结构,否则只会在事件发生的一瞬间才能满足要求。...
2021-12-16 16:34:56 511
原创 LabVIEW创建子VI的接线端
搞了几次老忘记,这里写出具体的创建子VI的方法,在面板中添加了子VI模块以后一般默认是没有接线端子的,需要手动添加,具体方法是点击进入到子Vi模块,可以看到右上角如图所示:可以根据模式来选择不同的输入输出方式(每个块就是一个引脚)。选择好以后需要点一下块再点一下前面板中具体的变量(很多文章都没提,搞得我摸索了半天)(要点两个东西!!!),这样再到主Vi去可以看到子Vi就有了引脚。...
2021-12-16 16:01:35 6307 3
原创 disconnect_hw_server localhost:3121 connect_hw_server INFO
关于标题所示问题的解决办法亲测有效,在新板子下载程序时遇到的程序下载找不到板子型号的问题,tcl console出现标题所示问题,这一般是由于软件没有安装相应驱动,或者在软件安装时没有安装相应驱动,因此需要找到相应的驱动进行重新安装。文件的一般位置:D:\Xilinx\Vivado\2017.4\data\xicom\cable_drivers\nt64\digilent管理员运行下载安装之后即可使用。...
2021-11-23 08:50:36 5116 2
原创 AD怎么在原理图中添加多层子原理图组
这里我们主要讨论一下在AD原理图绘制过程中,当遇到有重复原理图的情况时,怎么通过多层子原理图来代替之前的多个重复原理图,从而减小绘图的工作量。方法:首先需要添加子原理图:可以通过页面符创建后,再在文件名中添加对应的子原理图文件,但我在这里推荐先建立一个普通的原理图(和顶层的原理图并列),之后再通过设计-create sheet symbol from sheet中选择子原理图文件,这样就在顶层中添加了子原理图的页面符。但是要注意的是,要在子原理图中设置好端口PORT,这样才能在顶层当中进行连线。这是
2021-11-05 16:11:47 11957
原创 关于脉冲高电压引到电路板的测量
脉冲高电压的测量办法其实大多时候,交流中电阻分压用于制作电路板已经足够了,选用高精度的无感电阻去除高频上的干扰即可。很多论文里面选用了阻容分压的方式,理论推导也是很好,但是我在仿真时就会出现很多问题,更不用说应用在实际电路当中了。所以还是电阻分压靠谱!它的特性如下电容分压也是,交流时特性很好注意成的是反比。(直流也是)阻容分压分为串联和并联:串联并联的阻容分压效果比较好,但是最好加一个补偿电路,这里我们用常用的高压探头来说明这部分的电路。说明一下,这里这个图用的SMA的头,实际应该用BNC
2021-11-01 16:13:34 733
原创 bnc和tnc接口
NC连接器是BNC连接器的变形,采用螺纹连接机构,用于无线电设备和测试仪表中连接同轴电缆。其适用的频率范围为0~11GHz。而BNC接口直接采用卡口连接,适用频率在0-4GHz。这种连接器可以快速连接和分离,具有连接可靠、抗振性好、连接和分离方便等特点,适合频繁连接和分离的场合...
2021-09-15 16:51:24 1531
原创 关于阻容耦合电路及阻容耦合分压
两级放大器之间采用耦合电容时,两级放大器之间采用阻容耦合电路。阻容耦合电路由电阻和电容构成,但是电阻是用后一级放大器的内阻代替的。等效后相当于一个电阻接地的一阶rc滤波器。可以看出这是一个电容、电阻构成的典型分压电路,加到这一分压电路中的输入信号Ui是前一级放大器的输出信号。从这一分压电路输出的信号是Uo,这也就是加到后一级三极管基极上的输入信号,这一信号愈大,说明耦合电路对信号的损耗愈小。提高放大器的输入阻抗,就可以减小电容值,从而减小漏电流。并且耦合电容对低频信号容抗比中频和高频信号的容抗要大,
2021-09-14 11:39:21 1996
原创 电压跟随器在电子电路设计中的主要作用
简单一点理解:电压跟随器具有高输入电阻、低输出电阻的特点。极端一点理解的话,当输入阻抗很高时,就相当于对前级电路开路,当输出阻抗很低时,对后级电路就相当于一个恒压源,即输出电压不受后级电路阻抗影响。一个对前级电路相当于开路,输出电压又不受后级阻抗影响的电路当然具备隔离作用,即使前、后级电路之间互不影响。而隔离作用就是将负载对输入端的影响隔离掉。除此以外还具有阻抗匹配的能力:3、阻抗匹配、提高带载能力 共集电路的输入高阻抗,输出低阻抗的特性,使得它在电路中可以起到阻抗匹配(阻抗从字面上看就与电阻不一样
2021-09-09 17:05:17 1002
原创 关于电容、电阻并联接地
一、对于电子电路: 电阻的两端并联一个电容,为了减小对高频信号的阻抗,相当于微分,这样信号上升速度加快,用于提高响应速度;电容一端接电阻,一端接地,则相反,滤去高频,相当于积分,用于滤波。 最典型的应用就是放大电路中的高低音频控制。 二、对于电力电路: 不管RC串联还是并联,电容的作用都是一样的,电容的作用就是防止电压突变,吸收尖峰状态的过电压,串联的电阻起阻尼作用,电阻消耗过电压的能量,从而抑制电路的振荡。并联的电阻吸收电容的电能,防止电容的放电电流过大,避免对与之并联的器件(如晶闸管)造成损坏。 最典型
2021-09-08 17:17:03 10239
原创 关于光纤通信
关于光纤通信光纤通信是利用光波在光导纤维中传输信息的通信方式,光纤通信中的主要光波是激光。一般来说光纤通信的原理是:在发送端要先把传送的信息(如话音)变成电信号,然后调制到激光器发出的激光束上,使光的强度随电信号的幅度变换而变化,并通过光纤线发出;在接收端只需要解调成原来的电信号。一根光纤要想传输信息需要:光源、传输介质、接收器。...
2021-09-07 19:54:44 351
原创 四种光纤接口的比较
光纤接口光纤接口是用来连接光纤线缆的物理接口。其原理是利用了光从光密介质进入光疏介质从而发生了全反射。光纤电缆线选择菲尼特ST卡接式圆形光纤接口:螺旋式,应用最广,易于固定但易折断且连接稍稍费力SC卡接式方型光纤接口:插拔式,直接插拔,使用方便,但没有固定端;抗压强度大,介入损耗波动较小,传输设备侧使用较多FC圆形带螺纹光纤接口:螺旋式,牢靠但是接的时间长LC光纤接口:插拔式,尺寸小密度高...
2021-09-06 20:08:09 1824
原创 FPGA中实现PLL分频
可以通过创建原理图的方式来实现,具体流程可以参考我的另一篇文章(调用滤波器)。产生的原理图为:测试代码如下:`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/08/13 10:30:44// Design Name: // Module
2021-08-21 10:54:56 1327
原创 IP Catalog与Create Block Design调用软核的不同
根据我在一些仿真当中的体会,整理了他们在调用软核中的一些区别。IP Catalog:通过它调用ip软核时,直接进行ip核的配置,配置完成后需要生成的是输出文件就像这样。然后需要编程人员调用这个clk_wiz_0的文件来编写rtl代码和测试文件。而CBD方法则是选择好ip核以后可以手动连接形成一个原理图,生成wrapper后即相当于生成了一个rtl代码,我们进行仿真时只需要编写测试代码即可。...
2021-08-21 10:42:48 1063 1
原创 python--文件读写
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。python读写文件的机制就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。读文件f = open(’/Users/gray/test.txt’, ‘r’) #没有会抛出IOError错误f.read() #一次读取文件所有内容,可加size。read(size)f.readline() #读一行f.cl
2021-08-15 16:17:27 120
原创 玫瑰编程--python
#RoseDraw.pyimport turtle # 定义一个曲线绘制函数def DegreeCurve(n, r, d=1): for i in range(n): turtle.left(d) turtle.circle(r, abs(d)) # 初始位置设定s = 0.2 # sizeturtle.setup(450*5*s, 750*5*s)turtle.pencolor("black")turtle.fillcolor("re
2021-08-15 12:17:29 1396
原创 面向对象学习中 特殊函数部分汇总
ordchrencodedecode#!/usr/bin/env python3# -*- coding:utf-8 -*-leninput #返回的是字符串printlist> pop\append\insertset>add\removedict>popabsmaxint()\bool()\float()\str()isinstance>>> from collections.abc import Iterable>>&
2021-08-15 11:34:34 110
原创 如何在FPGA中实现状态机
状态机状态机(State Machine)有限状态机(FSM):在有限个状态之间按一定规律转换的时序电路。模型:梅利型和摩尔型区别:输出是否只与状态有关(是否需要输入信号)编程方法:四段论根据前面的模型可以知道,要想完成状态机的编程需要完成以下几步:状态空间的定义状态的跳转(判断当前状态是啥,是一个时序结构)下一个状态(根据当前状态,结合一些其他的判断来判断下一个状态是什么)状态的动作...
2021-08-14 10:42:15 748
原创 python -- 生成器
生成器创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr&
2021-08-13 18:10:39 86
原创 各种数字电路接口电平
TTL是Transistor-Transist or Logic 的英文缩写,从其命名就可以看出,这种接口电平标准的初衷是 用于基于三极管结构的数字 系统之间的 。工作于 TTL 接口标 准下的数字电路,其内部有源器件的标准电源供给应 为5V, 输出、输人情况如下:对于输出端,状态 1 的电压要求为大于或等于 2. 4V, 状态 0 的电压要求为小于或等于0.5 V。对于输入端,状态 l 的判定要求为大于或等于 2. 0V, 状态 0 的判定要求为小于或等于0.8V.对比输出、输入端的电压要求..
2021-08-09 11:47:48 600
原创 怎么在Vivado中切换和调用modelsim仿真
在Vivado直接仿真时我觉得图也挺好看的,就是有时候时间会花的要久一点,话不多说,直接进入正题。一定注意版本的匹配关系!!!!!!!!!!!!!!!选择tools–Compile Simulation Librariesjin进入对话框,simulator选modelsim simulator,compiled library location选择新建的D:\Xilinx\Xlib,simulator executable path选择modelsim安装路径下的win64。注意compile xil
2021-08-06 15:52:15 1047
原创 VIVADO 建立一个新工程
安装好Vavido以后,打开Vivado.点击Create Project。点击Next输入工程名和文件地址。不用点击子文件夹。点击Next点击NEXT后显示如下对话框,我选择的芯片如下往后点一直点到finish。
2021-08-06 11:23:30 1017
原创 VIVADO 实现一个滤波器(使用FIR\DDS软核)
滤波器最开始学习FPGA的时候会知道FPGA除了一些普通硬件单元外还有一些IP核,这里我们用部分软核来实现滤波。滤波器的参数来着于MATLAB的工具箱。软核的调用如何建立一个IP核:在VIVADO的左边菜单种点击Create Block Design(实际也可以编写对应的HDL语句来实现这些软核)之后在右边的Diagram中点击中间的加号或者在空白出右击Add ip… 然后在搜索框选择DDS软核:出现的软核应该如图所示。同样再建立同样的一个DDS软核。之和需要点击对应软核选择部分参数(双击)
2021-08-06 10:52:05 3610 1
原创 python--错误处理
try: print('try...') r = 10 / 0 print('result:', r)except ZeroDivisionError as e: print('except:', e)finally: print('finally...')print('END')一般都是用try的方式来进行错误处理。如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执
2021-08-01 10:59:40 169
原创 进程和线程(python)
进程和线程对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。多进程Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊
2021-07-29 17:55:29 109
原创 python--sorted
sorted([‘bob’, ‘about’, ‘Zoo’, ‘Credit’], key=str.lower, reverse=True)如果不加key,默认按ASCII码排序,reverse表示倒序。key=abs
2021-07-27 10:44:22 81
原创 python--filter
Python内建的filter()函数用于过滤序列def is_odd(n): return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))# 结果: [1, 5, 9, 15]这部分代码的功能是只保留基数。只有函数为TRUE的那部分的值能够保留下来。注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
2021-07-27 10:40:17 116
原创 python map/reduce函数用法
>>> def f(x):... return x * x...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])>>> list(r)[1, 4, 9, 16, 25, 36, 49, 64, 81]f代表函数对象。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。>>>list(map(str,
2021-07-27 10:32:45 154
原创 python--面向对象编程
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。通过class定义class Student(object): passobject就是继承的类。实例的创建ll= Student()可以自由地给一个实例变量绑定属性bart.name = ‘Bart Simpson’由于类可以起到模板的作用,因此,可以在创建实例的时候
2021-07-23 21:16:22 125
原创 python-重难点知识汇总
重难点知识汇总python使用的是动态语言,也就是说在变量定义时不需要指定对应的数据类型。但是输入进来还是用int()函数把输入字符串变成整形数据。多行字符串可以用‘’’ … ‘’’表示。 前面有r前缀时可以直接将字符串完全输出,不需要考虑转义字符的问题。同时要了解不同字符编码之间的关系。在编写python代码时需要在最开始指定#!/usr/bin/env python3# -*- coding: utf-8 -*-当Python解释器读取源代码时,按UTF-8编码读取。python
2021-07-23 15:43:08 1346 4
原创 Vivado 不同文件的含义
1..dcp文件:每个过程都会产生特定格式的文件,就是ise中的网表文件和约束文件的集合,只不过在vivado中被集合在了一个文件里。2..xdc文件,这个是vivado的约束文件,vivado的约束文件和ise中的约束文件.ucf或者.pcf相比有很大不同,其约束文件其实就是一系列的tcl语句3..xci文件,这是定制ip产生的文件,里面包含了定制的ip核的所有信息,可以通过这个文件产生需要的ip核,作用和.dcp文件差不多。ip核中也有.dcp文件,关于选择.xci文件还是.dcp文件,在vivad
2021-07-22 16:30:17 1146
空空如也
C语言头文件的编写问题
2021-05-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人