自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 模电-PN结与二极管

在时间和树枝上均具有连续性,即在任意时刻均有确定的函数值u或i,而且u或i的幅度是连续取值。在时间和数值上均具有离散性,同时具有双值性(双值性是指信号仅有高电平与低电平之分)。

2024-09-16 09:55:42 1083

原创 硬件知识-通信协议与接口

开漏形式的电路有以下几个特点:1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。

2024-09-13 16:42:35 840

原创 硬件知识-LDO与DC-DC

输出压降比较低,输入3.3V,输出可达到3.2V。LDO的MOS管工作于线性状态。(可变电阻区)是用来给电源稳压。LDO由MOS管和三极管控制,区别在于最小压差不一样。LDO内部由4大部件构成:分压取样电路、基准电压、误差放大电路、晶体管调整电路。流程:通过反馈电阻R1和R2对输出电压进行采集,将采集的电压输入到比较器输入端,与基准电压(期望输出的电压)进行比较,再将比较结果进行放大;放大后的信号控制开关(MOS管或三极管),将Vout调整为设定值。一般LDO用于电流小于2A的电源电路,其优点是,

2024-09-12 20:44:21 783

原创 协议-HDMI

OSERDESE2原语的文档中介绍有:该原语可以进行8:1、10:1、14:1转换,当进行8:1转换的时候,采用一个原语即可,当采用10:1或者14:1转换的时候,需要采用两个原语级联的方式。由前面的简介部分我们知道,并串转换过程的实现的是 10:1 的转换率,理论上转换器需要一个 10 倍像素频率的时钟。8 位数据经过编码和直流平衡得到 10 位最小化数据,这仿佛增加了冗余位,对传输链路的带宽要求更高,但事实上,通过这种算法得到的 10 位数据在更长的同轴电缆中传输的可靠性增强了。

2024-09-12 09:30:11 1136

原创 Verilog-时钟切换电路

输入 sel,clka,clkb,sel 为 1 输出 clka,sel 为 0 输出 clkb。

2024-09-10 11:04:10 262

原创 Verilog-频率检测计

参考时钟50Mhz,检测时钟为 1-200Mhz,写出Verilog来。

2024-09-10 09:31:16 234

原创 SDRAM(2):初始化

1、Burst Length:突发长度,如果突发长度是4,那突发写时,只需给出4个写数据和需要写入地址的首地址,那么剩下的数据会排队写进去,一次共写入4个数据;本次设计中我们采用的突发长度为4,即 { A2,A1,A0 } = { 0,1,0 }3、CAS Latency:列选通潜伏期,即给出读命令和SDRAM 的读取 DQ 之间的延迟关系,只有 2 和 3 可以选择,我们选 3 吧,即 { A6,A5,A4 ) = {0,1,1}。4、OP code:写模式,读和写都选择成突发,即 A9 = 0。

2024-09-09 13:26:37 783

原创 SDRAM(1):基本介绍

本次设计采用的 SDRAM 芯片为 Winbond W9812G6KH - 6,查询数据手册发现其容量为:2M × 4 banks × 16 bits = 128 Mbit,其中 2M 为“行数×列数”,4为 L-Bank 数量,16 为单个存储单元的容量,即数据位宽。SDRAM 的内部是一个存储阵列,就像一张表格,我们在向这个表格中写入数据的时候,需要先指定一个行(Row),再指定一个列(Column),就可以准确地找到所需要的“单元格”,这就是 SDRAM 寻址的基本原理。多用于掉电后仍需存储的数据。

2024-09-01 18:46:53 1125

原创 协议-SPI

正是出于这种简单易用的特性,现在越来越多的芯片集成了SPI通信协议,如FLASH、SD卡,AD转换器等。由上图可知,当CPHA = 1时,时钟的第一个变化沿(上升沿或者下降沿)数据开始改变,那么也就意味着时钟的第2个变化沿(与第一个变化沿相反)锁存数据;当CPHA = 0时,数据在时钟的第一个变化沿之前就已经改变,并且保持稳定,也就意味着在时钟的第一个变化沿锁存数据。一般而言,SPI通信有4种不同的模式,不同的从设备在出厂时被厂家配置为其中一种模式,模式是不允许用户修改的。

2024-09-01 18:21:35 342

原创 Testbench编写

【代码】Testbench编写。

2024-09-01 18:05:50 253

原创 FPGA:异步复位同步释放

①降低了亚稳态的出现概率;②可以使所设计的系统成为100%的同步时序电路,这将大大有利于时序分析,并且综合出来的fmax一般较高;③因为它只有在时钟有效沿到来时才有效,所以可以滤除高于时钟频率的毛刺。①复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务,同时还要考虑clk skew、组合逻辑路径延时、复位延时等因素;②由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以倘若采用同步复位,综合器就会在寄存器的数据输入端口插入组合逻辑,这样会耗费较多的逻辑资源。

2024-09-01 16:41:32 724

原创 协议-SCCB(区别于IIC)

SCCB不支持连续读,Phase4的主机应答位必须为NA(no ack),即为1,所以SCCB读其实就专指单次读,和IIC单次读几乎一样。由此可见,SCCB就是改编版的IIC,完全可以按照IIC来理解,SCCB最主要是阉割了IIC的连续读写的功能,即每读写完一个字节就主机必须发送一个NA信号。除去上面三点,SCCB和IIC再无区别,因此如果只需要配置寄存器(只用到写),可以直接拿IIC的时序来当做SCCB用,如果需要读,读操作中间必须有一个stop。2.SCCB只能单次读,而IIC除了单次读还支持连续读。

2024-09-01 16:16:35 568

原创 协议-IIC

I²C即Inter-Integrated Circuit(集成电路总线),它是一种串行通信总线,使用多主从结构,由飞利浦公司在1980年代设计出来的一种简单、双向、二线制总线标准。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。主机启动总线,并产生时钟用于传送数据,此时任何接收数据的器件均被认为是从机。I²C总线由数据线SDA和时钟线SCL构成通信线路,既可用于发送数据,也可接收数据。

2024-08-31 15:55:49 1249

原创 FPGA:亚稳态

例如输入 [7:0]in 和 in_vld ,用in_vld打三拍,后两拍来边沿检测,取到确定的 [7:0]in。要求是[7:0]in的维持时间得满足三拍以上。

2024-08-31 14:14:33 409

原创 计数器(2):递增再递减,不断循环

设计一个数x,它先递增10次,然后递减10次,又递增10次,循环反复。

2024-08-31 13:54:44 245

原创 协议-VGA

VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的额一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。不支持热插拔,不支持音频传输。对于一些嵌入式VGA显示系统,可以在不使用VGA显卡和计算机的情况下,实现VGA图像的显示和控制。VGA显示器具有成本低、结构简单、应用灵活的优点。对于一名FPGA工程师,尤其时视频和图像的方向的学习者,VGA协议是必须要掌握的。

2024-08-31 10:55:19 808

原创 协议-UART

UART(universal asynchronous receiver-transmitter)是一种采用异步串行通信方式的通用异步收发传输器。一般来说,UART总是和RS232成对出现,那RS232又是什么呢?RS232也就是我们计算机上的串口,它的全称是EIA-RS-232C (简称232,或者是RS232 )。

2024-08-31 09:33:07 561

原创 IP核-FIFO

FIFO硬件依赖为一块RAM,实际上为一块记忆存储模块(fifo memory),特点为先写入的数据会被先读出。由于异步FIFO读写时钟的不一致,所以要比较读写地址时,首先就是要同步到同一个时钟域,依据一个时钟域来比较。同步的硬件依赖为一个二级的触发器。当除了最高位MSB外的其他位都相同,最高位不同时则表明此时写指针超过了读指针一圈,FIFO被写满了;当除了最高位MSB外的其他位都相同,最高位相同时则表明此时写指针等于读指针,FIFO被读空了。满判断:保守,性能有影响,但功能没影响。

2024-08-30 21:41:42 852

原创 IP核-RAM

1.创建ISE工程,IP核需要在ISE工程里面进行调用。点击Tools---Core Generator...2.在新弹出来的界面中创建一个属于IP核的工程:file---new project,并填写文件存储位置和文件名称,一般为ipcore_dir文件夹,点击保存3.弹出的Part处填写器件的系列、型号、封装以及速度等级,Generation处设置语言为Verilog,点击OK。

2024-08-30 21:22:21 1136

原创 IP核-PLL

1.创建ISE工程,IP核需要在ISE工程里面进行调用。点击Tools---Core Generator...2.在新弹出来的界面中创建一个属于IP核的工程:file---new project,并填写文件存储位置和文件名称,一般为ipcore_dir文件夹,点击保存3.弹出的Part处填写器件的系列、型号、封装以及速度等级,Generation处设置语言为Verilog,点击OK。

2024-08-30 16:42:44 309

原创 Verilog遇到问题总结

8、组合逻辑中,如果en1有效是一种结果,en2有效是一种情况,en1||en2有效又是一种情况,那么en1||en2有效应该写在第一个,否则会导致逻辑错误。10、[ 7:0]a <= 1’b1 << cnt:cnt=0时,a=0000_0001;cnt=1时,a=0000_0010,以此类推。7、如果要表达5< a < 9,直接这样写是错误的,应该写成5 < a && a < 9。12、a<b/2,当b为5时,a为0和1时a<b/2为真。&、|、~是按位符,结果是化为2进制后,再按位进行比较后的结果。

2024-08-30 16:18:07 201

原创 Verilog转电路图

Verilog代码描述的是硬件,要明白代码所会生成的电路。

2024-08-30 16:04:41 147

原创 数码管动态显示

数码管显示分为静态显示和动态显示。静态显示其实并没有用,和led灯没区别。而动态显示用处很大,基本上数码管的使用都是动态显示。数码管从右到左,一个接一个的亮起熄灭,让其总的速度加快,人眼看上去就像是一直亮着一样。扫描时间间隔建议为20ms以内,人眼才不会感到闪烁。一般来说一位数码管扫描1ms就能得到不错的效果了。附上小梅哥FPGA的HC595模块的代码,可以直接搭配数码管动态显示模块使用,在顶层例化连接一下就行了。第二种数码管动态显示方法:采用直接计数扫描方法。第一种数码管动态显示:采用分频时钟扫描方法。

2024-08-30 15:55:06 304

原创 按键消抖-task任务和仿真平台建立

按键抖动原理:按键存在一个反作用弹簧,因此当按下或者松开时均会产生额外的物理抖动,物理抖动会产生电平的抖动。消抖方法:一般情况下,抖动的总时间会持续20ms以内,按下按键后,等20ms过去了再取键值就行了。只对按下侧的抖动进行消除,弹起的就不管了,因为我们使用按键时要的也是按下后的键值。输出为1clk的按键值。下面是编写的仿真代码。由代码可以看到这里使用了task任务,用其定义一个完整的按下弹起的按键过程。在task任务中,模拟抖动时采用了随机数发生函数来产生抖动。

2024-08-30 14:32:55 148

原创 任意整数分频

分频电路一般以输入时钟源作为参考,对其进行降频输出;分频可以直接使用锁相环(PLL)时钟资源实现,也可以计数为基础,进行分频设计。本文主要记录后者的相关问题。

2024-08-30 09:56:48 329

原创 五、数字电子技术基础:常见数字模块

存储器由一个二维存储器单元阵列构成。存储器可以读取或者写入内容到阵列中的一行。这一行由地址指定。读出或者写入的值称为数据。一个有N位地址和M位数据的阵列就有2^N行和M列。每一行数据称为一个字。因此,阵列包含了2^N个M位字。阵列的深度是行数,宽度是列数。也称为字大小。阵列的大小就是深度X宽度。位单元存储器阵列以位单元构成的阵列组成,其中每个位单元存储一位数据。每一个位单元与特定字线和特定位线相连。对于每一个地址位的组合,存储器将字段设置为高电平,并激活此行中的位单元。

2024-08-29 21:31:29 755

原创 四、数字电子技术基础:硬件描述语言

对于现代数字设计,硬件描述语言是十分重要的工具。当学会了Verilog,就可以比手工绘制图表更快的描述数字系统。而且因为修改时只需要改代码,而不是繁琐的重绘电路图,所以调试周期也会更快。然而,如果不熟悉代码所代表的硬件,使用硬件描述语言的调试周期可能会更长。硬件描述语言用于模拟和综合。逻辑模拟是在系统转化为硬件前在计算机上进行测试的强大方法。模拟器可以检查系统中在物理硬件中不可能被测量的信号。逻辑综合把硬件描述语言代码转换成数字逻辑电路。

2024-08-29 19:27:52 702

原创 PWM呼吸灯

【代码】PWM呼吸灯。

2024-08-28 18:58:12 118

原创 状态机的Verilog写法

硬件设计很讲究并行设计思想,虽然用Verilog描述的电路大都是并行实现的,但是对于实际的工程应用,往往需要让硬件来实现一些具有一定顺序的工作,这就要用到状态机思想。什么是状态机呢?简单的说,就是通过不同的状态迁移来完成一些特定的顺序逻辑。硬件的并行性决定了用Verilog描述的硬件实现(譬如不同的always语句)都是并行执行的,那么如果希望分多个时间完成一个任务,怎么办?也许可以用多个使能信号来衔接多个不同的模块,但是这样做多少显得繁琐。状态机的提出会大大简化这一工作。——《深入浅出玩转FPGA》

2024-08-28 16:23:53 1077

原创 计数器:Verilog常用写法

从两个仿真波形可以看到,代码片段法计满之后会进行清0,而开源骚客的方法在计满之后会进行保持。现在对OV5640摄像头进行上电控制,由数据手册得到上电时序图如下所示,现用Verilog实现其波形。可以看到开源骚客写法较为简洁,代码精简很多。源自开源骚客《SDRAM那些事儿》系列教程。[3]开源骚客《SDRAM那些事儿》[1]小梅哥FPGA教程。[2]明德扬FPGA教程。4.2、开源骚客计数器。

2024-08-28 14:06:33 233

原创 基本数字电路的Verilog写法

Verilog对电路功能的描述有三种方式:结构化描述、数据流描述、行为级描述。三种描述方式抽象级别不同,各有优缺点,相辅相成,需要配合使用。数据流描述抽象级别较高,不再需要清晰的刻画具体的数字电路,而比较直观的表达底层逻辑。:把一个变量复制多次,组成一个更大位宽的变量;此处有误:输出Y应为1bit,因为输入为8个1bit的数据,输出Y应为选择其中一个进行输出。这些基础数字电路的Verilog描述应该非常熟悉,才能够为后面的学习打下扎实的基础。结构化描述的抽象级别最低,是最接近实际硬件结构的描述方式。

2024-08-28 10:38:26 637

原创 三、数字电子技术基础:时序逻辑设计

本章介绍了时序逻辑电路的分析和设计。和输出只取决于当前输入的组合逻辑电路相比,时序逻辑电路的输出取决于当前和先前的输入。换句话说时序逻辑电路记忆了先前的输入信息,这种记忆称为逻辑的状态。时序逻辑电路很难分析,并容易产生设计错误,所以我们只关心小部分成熟的模块。需要掌握的最重要元件是触发器,它的输入为时钟和D,产生一个输出Q。触发器在时钟上升沿将D值复制到Q,其它时候保持原来的状态Q不变。共享同一个时钟的触发器称为寄存器。触发器还可以接收复位和使能信号。

2024-08-28 09:54:52 999

原创 二、数字电子技术基础:组合逻辑设计

数字电路是一个包含离散电压值输入和输出的模块。它的规范描述了模块实现的功能和时序,本节主要涉及组合电路,其输出仅仅取决于当前的输入量。组合电路的功能可以通过真值表或布尔表达式确定。每个真值表的布尔表达式可以通过系统的使用“与或式”或者“或与式”获得。与或式中,布尔表达式写成一个或多个蕴涵式的或(OR)。蕴涵式是各个变量的与(AND)。布尔表达式可以使用布尔代数的规则化简。特别是,可以组合包含了某个变量真和补形式的两个的两个蕴涵项化简成最简的与或式:PA+P非A非=P。

2024-08-27 16:50:54 928

原创 一、数字电子技术基础:数制

真值表(truth table)的左侧列出输入,右侧列出对应的输出,而且每种可能的输入组合对应一行。因此,如果驱动源的输出被一些噪声干扰,接收端的输入依然能够检测到正确的逻辑电平。对数字电路的约束很重要,不同于模拟电路,数字电路使用离散电压,所以数字电路可以看作是模拟电路的一个子集,而且某种意义上其能力要弱于模拟电路。一个N位带符号的原码数中的最高位为符号位,剩下的N-1位为数值(绝对值)。然而,从模拟电路的角度看,缓冲可能有一些很好的特征使得它可以向电机传递大电流,或者将输出更快地传递到多个门的输入上。

2024-08-27 15:29:46 1095 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除