07 2020 档案

摘要:zynq之TF卡写入函数f_printf 1、基本原理 前面使用f_write写入了数据到TF(SD)卡中,可以实现较短字符串的写入。当字符增加时,容易出现乱码。而f_printf则是专门用于字符串写入的函数,支持整型和字符型数据的写入,可以提高数据写入的灵活性和便捷性。 2、实验操作 要使用f_p 阅读全文

posted @ 2020-07-31 22:09 绿叶落秋风 阅读(1454) 评论(0) 推荐(0)

摘要:quartus之rom的IP测试 1、rom的作用 rom,就是只读存储器,内部数据在下载电路时就已经确认,不能使用信号驱动更改,只能够读取,一般用于比较重要的配置数据。在quartus中,可以直接调用IP核实现该操作。配置文件有hex和mif两种,都可以实现数据的写入。 2、测试方法 测试代码: 阅读全文

posted @ 2020-07-30 22:03 绿叶落秋风 阅读(860) 评论(0) 推荐(0)

摘要:verilog之预编译 1、基本作用 预编译,就是在verilog进入编译器前的准备工作。一般是完成一些文件的调用,一些编译器的设置,一些参数的定义。一般使用include,define,timescale就可以实现。比较灵活的使用是ifdef和endif的插入,可以将预编译的功能拓展。 2、使用事 阅读全文

posted @ 2020-07-30 20:34 绿叶落秋风 阅读(1002) 评论(0) 推荐(0)

摘要:zynq之TF卡写入常见问题 1、基本原理 前面做过zynq的TF读写实验,使用串口返回了实验所需的现象。那个时候也没有深究头文件"ff.h"里的几个常用的函数。这次需要使用TF卡做实验时发现很多操作都不大一样,不能够简单的重复,这里把几个常见的问题列举出来,方便以后的查阅。 2、实际问题 先用一段 阅读全文

posted @ 2020-07-29 23:10 绿叶落秋风 阅读(1232) 评论(0) 推荐(0)

摘要:verilog之random 1、基本作用 random,用于产生随机数。在测试时,有时需要测试的情况太多,无法一一列举,就需要使用抽样测试的方法验证功能是否可行。random是一个有返回值的系统函数,可以直接用于计算。返回值带符号的整形,所以不能直接当作无符号的数据处理。可以加上{}作为本身连接, 阅读全文

posted @ 2020-07-28 22:27 绿叶落秋风 阅读(3066) 评论(0) 推荐(0)

摘要:quartus之ram的IP测试 1、基本原理 ram,读取存储器,用于储存数据。基本的原理就是使用时钟驱动时序,利用地址区分位置,使用使能控制写入。输出的结果以写入的位宽输出。 2、实际操作 顶层代码: module ram( input clk, input rst_n, output [7:0 阅读全文

posted @ 2020-07-27 10:21 绿叶落秋风 阅读(1236) 评论(0) 推荐(0)

摘要:verilog之readmemb 1、基本作用 用于读取存储器的值的系统函数。这里首先要知道什么是存储器。在verilog中,有一些比较大的数据是需要存储的,一般需要使用存储器,语法结构类似二维数组。 reg [7:0] mem[256:1];initial mem[1]=8'hff; 这里的mem 阅读全文

posted @ 2020-07-26 22:51 绿叶落秋风 阅读(2903) 评论(0) 推荐(0)

摘要:verilog之monitor 1、函数作用 monitor用于追踪变量的变化情况,这在实际使用中还是非常实用的。电路中的某个信号的变化可以通过monitor检测,不需要使用波形图去仔细查找。也便于准确描述某个信号的变化。 2、基本用法 module monitor; reg a_monitor; 阅读全文

posted @ 2020-07-25 22:17 绿叶落秋风 阅读(4506) 评论(0) 推荐(0)

摘要:verilog之display 1、函数简介 $display是用于显示不同格式的变量的函数,用于测试过程中观察数据数据的特点。该观测不如波形图直观,但是如果可以详细的设置好观测点,有时可以达到事半功倍的效果。 2、实际测试 module display; /* 数据类型简写 %h或%H 以十六进制 阅读全文

posted @ 2020-07-24 23:31 绿叶落秋风 阅读(8049) 评论(0) 推荐(0)

摘要:fifo的IP核学习与解析 1、fifo的基本原理 fifo,就是缓存器,可以理解为升级版的D触发器。D触发器是在时钟信号的控制下,数据等时间间隔刷新。对于fifo而言,数据也是需要刷新的,不过有一个读取控制信号决定数据是否读取。还有一个区别就是输入是与储存数据脱钩的。有写入控制信号决定是否连接。还 阅读全文

posted @ 2020-07-23 23:35 绿叶落秋风 阅读(535) 评论(0) 推荐(0)

摘要:verilog之四位全加器 1、简易代码 module adder_4bit ( cout,sum,ina,inb,cin ); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+in 阅读全文

posted @ 2020-07-22 21:40 绿叶落秋风 阅读(2035) 评论(0) 推荐(0)

摘要:verilog之时钟信号的编写2 1、时钟信号的特点 时钟信号除了可以根据时序一个个变化列举出来,还可以利用其循环的变化的特点,使用循环执行语句always来实现。这种方法实现的时钟信号可以一直执行且不需要关注每个变化点的延时。 2、基于begin-end块的时钟信号 initial begin c 阅读全文

posted @ 2020-07-16 23:16 绿叶落秋风 阅读(4172) 评论(0) 推荐(0)

摘要:verilog之简单时钟信号的编写 1、数字时钟信号 在数字电路中,时钟信号是重要的一类信号,一般作为激励源驱动时序电路。掌握时钟信号的编写,对于时序电路的仿真具有重要意义。所有的时序电路都需要设置时钟信号来确认时序。这里先写一个已知时间间隔的简易时钟信号。 2、基于begin-end的编写 ini 阅读全文

posted @ 2020-07-15 20:18 绿叶落秋风 阅读(6224) 评论(0) 推荐(0)

摘要:modelsim的工程文件结构 1、工程结构 modelsim中的工程包括一个库(这个库可以是空的,也可以包含器件延时信息的真实库),一个工程(以mpf为后缀的文件是工程的快捷打开方式)和若干源文件。一个库是可以包含多个工程,一个工程可以包含多个可执行的verilog(其他语言暂时不考虑)文件。 2 阅读全文

posted @ 2020-07-14 22:41 绿叶落秋风 阅读(1174) 评论(0) 推荐(0)

摘要:FPGA之PLD的简单设计 1、实验原理 PLD是可编程逻辑器件的简称,是FPGA的前身(FPGA是在PLD的基础上发展出来的)。从PLD设计可以感受早期可编程逻辑器件的特点,了解FPGA在器件层的原理特点。本次实验采用WinCupl软件编辑一个PLD的配置文件,使用proteus进行仿真。 2、实 阅读全文

posted @ 2020-07-12 20:34 绿叶落秋风 阅读(801) 评论(0) 推荐(0)

摘要:AXI自定义IP之UART调试 1、实验原理 前面的自定义IP中已经将AXI总线的大部分接口设置都一一验证了。基本掌握了关键接受寄存器slv_reg和发送寄存器data_reg_out,可以基本实现简单的PL和PS的联合设计。但是,限于开发板的测试手段有限,只有一个按键和四个LED灯,限制了对复杂设 阅读全文

posted @ 2020-07-10 22:17 绿叶落秋风 阅读(1157) 评论(0) 推荐(0)

摘要:proteus的五状态显示控制器 1、实验原理 使用的核心器件还是4028,BCD译码器。将输入的四个信号接入输入端,输出信号选取0、1、2、4、8这五个输出状态驱动led显示。发光LED需要加入保护电阻。 2、实验操作 电路结构还是比较简单的。注意这里的LED的连接方式。不使用4028的输出引脚直 阅读全文

posted @ 2020-07-09 10:40 绿叶落秋风 阅读(469) 评论(0) 推荐(0)

摘要:AXI4的PL与PS联合设计 1、实验原理 在前面的学习中,解决了如何利用一个缓冲寄存器控制另外一个寄存器的输入输出配置。接下来就是如何将PL设计直接导入到PS中实现资源互换。PS是可以通过AXI4总线访问从机的缓存寄存器,从机是可以直接调用PL设计的。只需要从机的IP的编辑界面正常的调用对应的mo 阅读全文

posted @ 2020-07-08 23:10 绿叶落秋风 阅读(691) 评论(0) 推荐(0)

摘要:AXI4的IP的输入配置 1、实验原理 前面一篇验证中验证了AXI中的data_reg_out是输出缓存器。这里再引入一个slv_reg2作为slv—_reg1的输入输出配置寄存器。这里先实现一个简单的功能:当slv_reg2为16'hffff时,slv_reg1作为输入口,否则slv_reg1作为 阅读全文

posted @ 2020-07-07 20:34 绿叶落秋风 阅读(453) 评论(0) 推荐(0)

摘要:proteus之四状态锁定器 1、实验原理 利用4071(或门)的锁定功能,当输入为1时输出结果锁定为1,使结果锁定在这个地方。4028(BCD译码器)将输入转化为输出,利用输出反馈到或门用于自锁。 2、实验电路 原理就是利用或门的1自锁,使得输入一个1的值会保持为1. 3、实验总结 4028是一个 阅读全文

posted @ 2020-07-07 10:24 绿叶落秋风 阅读(548) 评论(0) 推荐(0)

摘要:AXI4从机总线分析验证之读取寄存器值 1、实验目的 利用前面所学的AXI4总线协议的理论分析,验证如何将一个PL的输入信号通过AXI发送到PS端。大致思路就是取一个按键,信号接入自建的AXI4的IP中,取代AXI4中reg_data_out成为AXI4该寄存器从地址的读取信号。然后通过PS发送到另 阅读全文

posted @ 2020-07-06 20:36 绿叶落秋风 阅读(1229) 评论(0) 推荐(0)

摘要:基于proteus的555的门铃计数电路 1、实验原理 555定时器可以作为单稳态触发器完成计数所需的时钟。门铃工作时,需要进行一次计数。计数器使用前面使用的4026就可以将结果直接显示在数码管上。 2、实验操作 实验操作的话,基本上就是一些辅助电路的加入比较复杂。保护电路在实际的设计时是重要的部分 阅读全文

posted @ 2020-07-05 11:41 绿叶落秋风 阅读(1561) 评论(0) 推荐(0)

摘要:基于proteus的4026的二分频计数 1、芯片原理 4026还是一个CMOS芯片,是直接输出段码的计数器。显然,这个芯片的作用就是和七段数码管配合,直接将计数结果显示在数码管上。这里只是用于分频,只需要一个端口的有效值即可。使能信号方面:INH、MR为低电平时电路导通,DEI为高电平时电路导通。 阅读全文

posted @ 2020-07-04 19:57 绿叶落秋风 阅读(1308) 评论(0) 推荐(0)

摘要:基于proteus的4019的移位设计 1、实验原理 4019是一个基于CMOS的数字集成芯片,具有数据选择和逻辑门或两种工作状态。这里利用数据选择的切换,实现数据的左移和右移操作。简而言之就是左移使用一套通路,右移选择一套通路。两者共同作用就可以得到最终的设计。使用D触发器可以有效地记录数据的状态 阅读全文

posted @ 2020-07-03 19:09 绿叶落秋风 阅读(728) 评论(0) 推荐(0)

摘要:基于ARM联合ZYNQ的设计小结 1、硬件设计 硬件设计就是使用PS的自带硬核,外接其他可以连接AXI的IP核,构成一个自定义的硬件平台。如果简单理解,可以把这些操作统称为底层。这部分的设计还是比较方便的。vivoda中有丰富的可以利用的IP核来使用。在使用官方的IP核时有一种比较轻松的感觉,因为官 阅读全文

posted @ 2020-07-02 21:18 绿叶落秋风 阅读(430) 评论(0) 推荐(0)

摘要:自定义AXI总线IP之补全寄存器配置输入和输出 1、实验目的 在使用默认的AXI4的配置时,不会有寄存器的配置,无法配置端口的输入还是输出。根据前面的AXI总线的理解,这里通过仲裁器判断,将AXI4的从地址0x04对应的寄存器用于端口的配置。通过寄存器的读取后直接输出到顶层。也可以直接将端口的数据加 阅读全文

posted @ 2020-07-01 21:47 绿叶落秋风 阅读(1163) 评论(0) 推荐(0)