自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (3)
  • 收藏
  • 关注

原创 cshell

将‘/’替换成空格,并赋值给数组,通过操作数组$arr[idx]来解析路径。使用expr来标识变量运算。

2024-05-15 13:49:11 133

原创 Verdi 操作

前提是这些波形共享一个vdb/dut/tb。

2024-04-23 11:15:34 210

原创 sv define参数和变量拼接

使用``来引用将传进来的值(变量名本身的字符串)使用##来使用define参数引用变量的值。

2024-04-16 16:17:59 428

原创 [csh] 命令

【代码】[csh] 命令。

2024-04-16 11:38:04 138

原创 [gvim] 操作

1. 删除操作behaviorcode删除高亮内容:%s//g删除高亮内容所在行:g//d只删除匹配内容:%s/<pattern>//删除匹配内容所在的行:g/<pattern>/d只保留匹配内容的行:v/<pattern>/d2. 高亮多个关键字operate code/\vkey_word1|key_word22. 修改文件类型behaviorcodesv:

2024-04-16 11:37:26 267

原创 vivado与vitis联合使用microblaze软核

一、RTL代码有改动或者添加了ila,vivado综合完成后,导出bitstream1、在vivado中2、下一步选择including bitstream;3、导出.xsa文件4、在vitis中,update hardware specification,选择相应的xsa文件二、使用ila debug1、在vivado中正常添加ila,综合生成bitstream后,在vitis中更新相应的xsa文件,并重新编译;2、在vitis中下载hardware platform(选择的bit和m

2021-10-18 10:48:42 2548

原创 大华-快时钟域到慢时钟域

//快时钟域到慢时钟域module async_data( input clk_a, input clk_b, input rst_n, input data_valid, input [7:0] data, output valid_out, output data_out); //时钟域a reg valid_temp; reg data_valid_reg; reg sync_reg; reg [7:0] data_reg; always@(po.

2021-07-09 17:41:49 502

原创 在FPGA添加用户逻辑和Microblaze的联合ILA调试

一、Block Design设计和ILA设置1、完成Block Design后右键想要抓取的信号,选择Debug。然后点击Run Connection Automation,自动添加ILA IP核,最后Ctrl+S保存。2、右键design_1,点击Generate Output Products,将Block Design中使用到的IP核生成源文件和约束文件。3、点击Create HDL Wrapper,生成顶层例化文件。4、完成自己Verilog逻辑设计后,点击Generate Bits

2021-07-03 11:15:43 1576

原创 I2C原理与FPGA实现(二)

二、实现由于I2C两根传输线都被上拉电阻上拉,所以输出高电平时,FPGA只需要输出高阻态Z即可。同时,输入时,也必须将双向端口inout输出为高阻态,再读端口的数据。根据被操作芯片手册,我们需要读写操作的数据格式分别为:这里需要注意要在sda线上传输两次被操作芯片的地址,并且注意两次读写控制标志不同2.1 读`timescale 1ns / 1psmodule i2c_read #( parameter CYCLE = 1000) ( input logic

2021-04-26 10:08:08 370

原创 MIIM接口实现

一、数据格式MIIM mdc信号线在空闲时刻输出高阻态,数据传输包括全为1的32bit preamble,2bit起始位,2bit读写控制,5bit PHY地址,5bit寄存器地址(复杂一些的芯片由于寄存器地址不够,可能无法访问芯片内部的全部寄存器);2bit的数据转换位,读操作时,master先输出一位高阻态,第二位由slaver拉低;写操作时,master 输出2’b10两位;接下来是16bit读写数据。数据格式非常简单,也没有主从应答,只需要将一串数据放到数据线上即可收发数据。由于mdio是漏

2021-04-26 09:42:51 1717

原创 I2C原理与FPGA实现(一)

一、原理I2C总线是一种常见的数据总线,广泛应用于各种控制系统中,是一种多主机总线,各个设备通过片上接口,通过I2C总线使得它们之间能够相互通信。I2C总线结构十分简单,只有两条线:串行数据线(SDA)和串行时钟线(SCL)。查看手册中有一些术语需要定义:【注】 Master不一定是发送方,也可能是接收方。Master控制着传输的开始和结束,并且在传输过程中负责产生的时钟信号(SCL)。1、SDA和SCL信号规定当SCL为高时,SDA必须保持不变;当SCL为低时,SDA才能变化(传输过程中每bi

2021-04-17 20:28:50 1010

转载 C语言动态链接和静态链接

编译过程分几个步骤,首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将对应的汇编指令翻译成机器指令,生成可重定位的二进制目标文件。由于每个文件都是独立编译的,即每个.c文件都会编译成一个.o文件目标文件,由于C文件之间存在依赖关系,为了满足这种依赖关系,需要对编译出来的目标文件进行链接,形成可执行文

2020-12-04 10:00:49 325

原创 FPGA网络通信 ——RGMII传输

一、RGMII特点RGMII采用双沿传输(DDR接口),在CLK的上升沿和下降沿都各传输一次数据,同时,TX_ER 和RX_ER 信号编码进了TX_CTL 和RX_CTL 信号中,不再使用独立的信号线。这两个信号传输也是通过上升和下降沿来区分的。二、RGMII 与 GMII 转换电路设计RGMII的设计逻辑只需要在GMII逻辑的基础上增加单沿八位变双沿四位(双沿四位变单沿八位)的逻辑。由于数据和时钟都是同时同向传输的,但是在接收端,需要时钟与数据的中心对齐。这里有两种处理方式:![在这里插入

2020-08-21 16:45:01 10164

原创 FPGA网络通信——基础网络知识

网络知识1、以太网MACMAC即Media Access Control,即媒体访问控制子层协议。位于OSI七层协议中数据链路层的下半部分(另半部分就是LLC,逻辑链路控制子层),主要控制连接物理层的物理介质。发送数据时,MAC层判断可以发送数据,给数据加上控制信号,然后将数据和控制信号以固定格式传输给物理层。接收数据时,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层(由IEEE-802.3以太网标准定义)。所以,一块以太网卡MAC芯片的作用不但要实现M

2020-08-21 16:44:37 2682

原创 Verilog中避免生成latch的方法

1、latch为电平触发的信号,控制信号为高时,相当于通路,为低时,保持输出不变。由于latch在使能信号有效时相当于通路,此时,若电路中存在毛刺(glach),则这个毛刺会经过latch传给下一级。而dff触发器,由时钟控制为边沿触发,则有可能将毛刺去除。2、防止出现latch的方法:使用完整的if-else语句;case语句中在每个条件下对在case语句中出现的被赋值的变量赋值(此时可以在进入case语句前对所有变量进行赋初值操作);使用default语句always@(sel) begin

2020-08-05 10:55:23 1125

原创 Verilog中单if语句、多if语句和case语句与优先级的关系

1、 if-else if-else 单if语句单if语句(if-elseif-…elseif-else)综合出来的电路没有优先级,从电路的角度来说,单if语句综合出来的电路类似于数据选择器,else路选通的条件是前面所有的if条件都不满足。always@(*) begin z = 0; if(sel1) z = a; else if(sel2) z = b; else if(sel3) z = c;

2020-08-05 10:51:10 20037 7

原创 FPGA实现多功能数字钟(Verilog)

FPGA实现多功能数字钟(Verilog)介绍整体框架介绍本文设计的数字钟的功能包括:正常时钟、日期显示、调整时间(日期)、整点报时、闹钟(包括闹钟音乐)、秒表、数码管显示。使用的rtl语言为Verilog,参考了一些别人的设计,对一些模块进行了仿真,并对整个系统进行了仿真,功能基本正确。接下来我将详细介绍各个模块的功能以及设计。下图为设计的所有模块:整体框架顶层rtl视图(不知道看不看得清):...

2020-07-21 16:04:04 25098 30

原创 Verilog中case语句不加default的影响

default语句的对case语句综合的影响之前看书都说case语句不加default会产生不必要的latch,浪费资源,有时候还会产生错误的时序。然后我写了点简单的程序测试一下,加不加default到底会对电路产生怎样的影响。时序电路不加default input clk; input [2:0] sel; output [3:0] out; reg [3:0] out; always@(posedge clk) begin case(sel) 3'b000: out &

2020-06-13 18:04:22 17304

原创 组合逻辑电路中的语法

组合逻辑电路中的语法1、 Verilog语句都是在module–endmodule模块中的module test_module( input wire [3:0] in, //不写wire或者reg默认为wire output wire [3:0] out); .......endmodule2、端口关键字有:input, output, inout ;除了Test Bench代码外,都需要定义端口3、连续赋值语句`timescale 10ns/1ns //基本时间单元/

2020-05-12 18:58:40 1134

原创 51单片机常用波特率设置

网上找的还是不如课本上的呀,这些全试过,很好用

2019-06-11 16:24:44 4777

原创 Qt5中 Lambda 表达式的使用

在Qt中信号的槽函数可以使用Lamba表达式来代替,作为槽函数的替代函数。Lambda是C++11添加的内容,在Qt5中使用需要在项目文件中添加CONFIG += c++11Lambda的基本类型为: 【】( ) { }与普通函数void change() { }相比,只有括号和大括号相同,作用也是相同的,即:括号()用来传递参数,大括号{}内为函数体方括号【】用来传递局部变...

2019-04-12 15:14:23 1276 1

原创 Qt5 第二课 设计第一个例子(包含设计父类)

#include<QApplication>#include <QWidget> //控件窗口基类#include <QPushButton>int main(int argc, char **argv){ QApplication app(argc, argv); QWidget w; w.setWindow...

2019-04-11 20:21:25 154

原创 Qt5 第一课 创建第一个项目中main()函数中初始语句的意思

<笔记> Qt5第一课<创建第一个项目中main()函数中初始语句的意思>1、 #include "mywidget.h" //头文件和类名一样 #include <QApplication> int main(int argc, char *argv[]) { //有且只有一个应用类的对象 QApplic...

2019-04-11 20:11:56 466

i2c读写Verilog代码

包含i2c读写模块,顶层文件,仿真文件

2021-04-26

FPGA实现多功能数字钟(Verilog).rar

使用Verilog实现的多功能数字钟(时钟,闹钟(设置、闹钟音乐)、整点报时、秒表、数码管显示),包含所有的rtl主体代码,和testbench仿真代码。以及使用的fpga驱动beep演奏音乐的原理

2020-06-15

空空如也

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

TA关注的人

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