自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IP核之单端口RAM实验

RAM(Random Access Memory):即随机访问存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。本节的实验任务是使用Vivado软件生成一个单端口的RAM并对其进行读写操作,然后通过仿真观察波形是否正确,最后通过在线调试工具对实验结果进行验证。如:将RAM设置的深度和宽度分别为32和8进行读写测试。在vivado中运行仿真之后自动同步到modulesim中。

2024-02-19 20:51:53 286 1

原创 IP核之PLL实验

MMCM和PLL:MMCM(混合模式的时钟管理,数字电路)是在PLL(锁相环,模拟电路)基础上加入的DCM(数字时钟管理单元)的一部分以进行精细的相移,即MMCM在PLL基础上加上了相位动态调整功能,MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小。Xilinx FPGA的时钟管理:CMT(Clock Management Tiles):时钟管理单元,可以对时钟进行管理,具有时钟倍频、分频、相位偏移、可编程占空比和优化抖动等功能。在design sources中添加例化代码和tb文件。

2024-02-12 15:58:31 308 1

原创 网表文件中添加调试信号

注:当添加信号显示位宽不一致时在代码中所需调试信号前面写(*mark_debug = ''true''*)关闭综合后设计,重新编译生成比特流文件,打开XDC文件可以发现之前添加进去的调试信号都在保存在其中。重新打开呼吸灯工程文件,打开综合设计,右上角选择debug之后可以添加需要调试的信号。之后可以将新添加的调试信号在XDC文件中删除。可以通过Netlist添加所需调试信号。连接开发板下载程序后同样显示调试界面。下一步Set Up Debug。

2024-02-08 15:17:51 98

原创 添加ILA IP核的调试方法

打开Vivado breath_led程序,项目总结页面可以看到板载资源占用情况,再点击左侧IP Catalog。通过ILA IP核在线调试可以看出硬件实现内部更细微的问题。(以呼吸灯项目为例)

2024-02-06 20:16:50 149 1

原创 在线调试工具的使用

1.Vivado工具集成了逻辑分析仪(ILA),用于替换外部的逻辑分析仪;2.利用FPGA开发工具自带的在线调试工具(在线逻辑分析仪等)。在线调试也称板级调试,它是将程序文件下载到FPGA芯片后分析代码运行的情况。1.添加ILA IP核,在代码中对ILA IP核进行例化;1.利用外部测试设备,如示波器和逻辑分析仪等;2.添加ILA核和VIO核实现在线调试;逻辑内部信号和端口信号(芯片到电脑);FPGA开发工具自带的在线调试工具(在线逻辑分析仪)逻辑内部信号和端口信号(电脑到芯片)。

2024-02-06 14:50:01 219 1

原创 呼吸灯实现

本节实验任务是使用正点原子FPGA开发板上的LED,实现呼吸灯效果,即由灭渐亮,再由亮渐灭(渐亮和渐灭的时间为2s)。在一定周期内改变高低电平占空比达到亮度渐变效果,高电平占比越多,LED灯越亮。在modulesim仿真,以500ns为周期(减少仿真时间),下图为部分放大后仿真结果。呼吸灯原理:PWM(Pulse Width Modulation),脉冲宽度调制。呼吸灯:由灭渐亮,再由亮渐灭,模仿人呼吸方式的LED灯。cnt_2s缩小后为2000ns。cnt_2ms缩小后为200ns。实验验证为预期输出。

2024-02-04 20:19:25 256 1

原创 按键控制蜂鸣器

本节的实验任务是使用开发板上的KEY0按键控制蜂鸣器发声。初始状态为蜂鸣器鸣叫,按下按键后蜂鸣器停止鸣叫,再次按下按键后,蜂鸣器重新鸣叫。在modulesim仿真,以500ns为周期(减少仿真时间),下图为部分放大后仿真结果。通过open target自动连接开发板再选择到指定文件(代码)下载。通过vivado创建工程,配置IO口和约束文件。编写tb_key_led文件。编译之后下载到开发板。按键控制蜂鸣器波形图。开发板实现控制效果。

2024-02-03 21:49:28 883 1

原创 触摸按键控制LED

对于上升沿的检测通过打节拍的方式,第一拍从按键按下下个时钟上升沿开始,第二拍从第一拍滞后一个时钟开始,对于上升沿检测是通过将第二拍取反后与第一拍相与(&)得到,LED通过上升沿的变化取反(初始为点亮)。触摸IC:电容式触摸芯片是为实现人体触摸而设计的集成电路,可替代传统机械式轻触按键,且触摸界面防水防尘、自由定制、美观耐用。本节的实验任务是使用触摸按键控制LED灯的亮灭,开发板上电后LED为点亮状态,手指触摸后LED熄灭;再次触摸时,LED点亮。IC检测到电阻支路电容变化后输出一个信号表示触摸按键被按压。

2024-02-03 15:11:06 356 1

原创 按键控制LED灯

注:led灯变化不是与led_flag反转沿对其的,因为需要采集到下个时钟上升沿才会led变化。实验任务是使用开发板上的两个按键控制两个LED灯的亮灭。按不同的按键,LED灯呈现不同的效果。在modulesim仿真,以500ns为周期(减少仿真时间),下图为部分放大后仿真结果。通过open target自动连接开发板再选择到指定文件(代码)下载。两个按键控制两个LED灯。通过vivado创建工程,配置IO口和约束文件。LED灯流水间隔0.5s。编译之后下载到开发板。实验验证为预期输出。开发板实现控制效果。

2024-01-26 17:04:23 326 1

原创 FPGA流水灯——LED(领航者V2)

本节的实验任务是使用开发板上的两个LED灯顺序点亮并熄灭,循环往复产生流水灯的效果,流水间隔时间为0.5s。通过open target自动连接开发板再选择到指定文件(代码)下载。在modulesim仿真,以500ns为周期(减少仿真时间)通过vivado创建工程,配置IO口和约束文件。LED原理图(ZYNQ7Z020)编写tb_flow_led文件。高电平点亮,低电平熄灭。实验如预期波形流水点亮。编译之后下载到开发板。开发板实现流水灯效果。

2024-01-25 16:38:52 466

原创 初学Verilog语言(四)

状态机(state machine):有限状态机(finite state machine,简称FSM),在有限个状态之间按一定规律转换的时序电路。状态寄存器由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。状态空间:将所有状态的集合(编码:在代码中将所有状态用二进制数表示)的编码集合。状态是否改变、如何改变,取决于组合逻辑F的输出,F是当前状态和输入信号的函数。状态机的输出是由输出组合逻辑G提供的,G也是当前状态和输入信号的函数。(4)各个状态下的动作(组合逻辑)

2024-01-21 11:41:05 314 1

原创 初学Verilog语言(三)

其中敏感列表为(a b c d e f g h p m),对于out1的输出,如果a为1(高电平)则输出(b+c)的值,如果a为0(低电平)则输出(d+e)的值。时序逻辑电路中,任一时刻的输出不仅取决于当前时刻的输入信号,还取决于电路原来的状态。所谓非阻塞的概念是指,在计算非阻塞赋值的RHS以及更新LHS期间,允许其他的非阻塞赋值语句同时计算RHS和更新LHS。这种电路结构只与输入电平的变化有关系。所谓阻塞的概念是指,在同一个always块中,后面的赋值语句是在前一句赋值语句结束后才开始赋值的。

2024-01-20 16:15:39 1199

原创 初学verilog语言(二)

模块间调用首先例化模块,通过重新命名(通常使用u_xxx)模块名,再使用.clk()的方式将模块中定义的clk端口与xxx(顶层模块端口)对应连接(注意输入端口和输出端口对应,对应位宽也应一致)。#后的.MAX_NUM不为端口表示,为参数传递(将被调用模块中的50000_000用25000_000代替,传递完的值依然为25000_000)。其中block为变量名,(a,b,c,d)为端口定义,input和output为IO说明,assign为功能定义,有些代码还有内部信号声明。例如:verilog语言。

2024-01-20 10:33:18 344

原创 初学Verilog语言(一)

如果该过程语句描述的是组合逻辑,即always语句中不带有时钟信号,则该寄存器变量对应为硬件连线。如果该过程语句描述的是时序逻辑,即always语句中带有时钟信号,则该寄存器变量对应为触发器。如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,即其值为z。寄存器数据类型的关键字是reg,reg类型数据的默认初始值为不定值x。寄存器表示一个抽象的数据存储单元通过赋值语句可以改变寄存器存储的值。线网类型的变量不能存储值,它的值是由驱动它的元件决定的。每个参数定义的右边必须是一个常数表达式。

2024-01-19 21:02:25 313

空空如也

空空如也

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

TA关注的人

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