- 博客(55)
- 资源 (9)
- 收藏
- 关注
原创 【PCIE系统学习】Gen1/2&Gen3/4 symobl与OrderSet概念对比
这个专栏要干的事:学习PCIE理论知识,学会PCIE IP/VIP的使用。可以达到上手做项目,而不是空有理论低价收费的目的:抵制胡乱传播转载现象。版本控制:便于增加内容以及勘误v20230829。
2023-08-29 20:21:38
2402
原创 【SVA】SystemVerilog Assertion语法速查
是同一个周期开始检查,但不一定同一个周期结束检查。需要左右至少有一个条件满足。与and相同是与逻辑,是同一个周期开始检查,也是同一个周期结束检查。and是同一个周期开始检查,但不一定同一个周期结束检查。property和sequence内部可以创建局部变量。注意,这里的延迟和仿真里加的#有一点区别。if和蕴含操作符是一样的。
2022-11-28 23:54:17
1532
原创 【VIM】代码折叠命令
VIM的代码折叠模式有很多种,以下是手动折叠的相关设置个命令。2、然后重新打开vim,输入以下命令查看是否配置成功。1、在vim配置文件的最后,添加以下指令。
2022-11-04 08:57:20
3725
原创 【AXI4 verilog】手把手带你撸AXI代码(四、AXI4接口的RAM设计)
说明:1、本代码为原创设计,仅供学习使用。2、从这篇开始,这个专栏将正式进入到RTL设计阶段。3、这篇文章过后还会有 AXI-lite,Xilinx AXI主机等代码的分析,供大家学习参考。
2022-09-17 20:11:09
6638
7
原创 【Vim】vim/gvim 删除重复行
连起来:行首后面跟着一到多个任意字符之后跟着行尾,然后有一个换行符,换行符之后是与前面多个任意字符相同的字符串。找到这样的行,删掉。
2022-09-14 20:07:07
5429
原创 【AXI4 verilog】手把手带你撸AXI代码(二、AXI仿真激励编写)
本文编写了一种适用于AXI4 从机的仿真tb,主要支持的功能如下:1:支持对AXI基本数据通路的激励。2:对于用户来说,只需要调用task 即可发出outstanding指令,指定size,len,addr等信息。对于写来说,环境会自动发送足够长度的随机数据,并伴随正确的wvalid。3:在指令和数据发送时,环境支持被从机反压。此时环境的valid和指令(或数据)都会按协议保持当前状态。直到从机ready为止。......
2022-08-31 23:27:26
3917
5
原创 【AXI4 verilog】手把手带你撸AXI代码(三、同步fifo设计)
为了支持AXI的outstanding特性,在设计从机时,需要使用fifo来缓存各通道的指令和数据。次FIFO特性如下:同步fifo,宽度32,深度31,带有空满指示信号,空时禁止读取。满时禁止写入。否则会造成内部指针错误。预读取:读数据时钟裸漏,当读使能有效时。当前数据消失,下一笔数据裸露,如此直到数据取走为止。...............
2022-08-30 22:51:34
2344
5
原创 【verilog】占空比50%的奇数分频
设计一个同时输出7分频的时钟分频器,占空比要求为50%注意rst为低电平复位上升沿下降沿分别操纵计数器进行计数产生分频时钟,然后将时钟相或。结果波形
2022-06-12 11:03:14
2328
原创 【verilog】 输入序列连续的序列检测
请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。模块的接口信号图如下:使用状态机进行序列检测,需要注意的是,当某个状态向下跳转失败时,该过程是否与开始某段序列相符,就要判断是否要回到IDLE,还是要回到其他别的状态。波形......
2022-06-11 21:43:54
933
原创 【verilog】 任意小数分频
请设计一个可以实现任意小数分频的时钟分频器,比如说8.7分频的时钟信号注意rst为低电平复位信号示意图:假设输入时钟名为ci,输出时钟名为co若实现3分频,则每3个ci上升沿,出一个co上升沿。若实现4分频,则每4个ci上升沿,出一个co上升沿。若实现8.7分频,则每8.7个ci上升沿,出一个co上升沿。即为:每87个ci上升沿出10个co上升沿87个ci上升沿可以拆分为63+24个在前63个ci上升沿里,每9个ci上升沿出1个co上升沿,一共能得到7个co上升沿在后24个ci上升沿里,每8
2022-06-10 23:18:54
1645
2
原创 【AXI4 verilog】手把手带你撸AXI代码 (番外、AXI地址卷回wrap计算方法)
地址上界与地址下界地址下界 = 取整(起始地址/(数据宽度B*突发长度)) * (数据宽度B*突发长度) 地址上界 = 地址下界 + (数据宽度B*突发长度)注:wrap突发不能接触地址上界,遇到地址上界,就要返回到地址下界例如一次4B的4次wrap突发,起始地址为0x3C下 = 3x16 = ............
2022-05-14 23:45:44
3806
原创 【UVM】宏替换生成test与default_sequence
TEST宏软件包仿真module结果TEST宏// ``作用为分割两个单词// (这个操作不会引入空格)(重点!宏替换是按照单词索引,空格// 和``都可以分割单词)// `"特殊的双引号,使用特殊的双引号,引号内的东西也会被宏替换掉// 如果是普通的双引号,双引号里面有关宏的单词不会被替换// 注意:特殊的双引号也是双引号,其表现出来的就是双引号// `\代表普通的斜线,因为斜线在宏里默认代表分隔符。这个是使用斜线的本身义 `define Generat.
2022-04-04 14:31:00
718
原创 通俗理解makefile
基本规则连续执行shell命令命令标志符“-”和“@”变量及变量的赋值方法内置条件判断语句符号变量本文抛开原理角度,仅在使用层面上介绍了makefile的特点和最基本的使用方法基本规则#++++++++++++++++++++Makefile++++++++++++++++++++#规则X:规则A 规则B 规则C #这个规则可以是makefile内的一条make规则 命令1 #也可以是当前路径下 存在的同名文件 命令2 .
2022-04-04 09:14:48
334
原创 【SystemVerilog】virtual task 与 向下类型转换
virtual taskvirtual function/task:Systerm Verilog 中允许父类句柄指向子类对象(向上类型转换),那么子类相对父类扩展出来的方法,对父类句柄是不可见的。假设子类和父类中都定义了同名的方法为 prints那么 使用指向子类对象的父类句柄调用该prints方法,调用的实质是父类的prints方法请看下例:module test;class dad; task prints; $display("IM DAD!"); endtaskend
2022-03-13 19:11:53
2392
原创 计算机补码:计算机如何进行负数运算
计算机中的数据是以补码形式储存的,正数的补码是其本身负数的补码是负数的符号位不变,其余位取反,最后+1举两个例子看看计算机怎么进行负数运算
2022-03-01 19:46:36
2162
原创 数字IC设计-DMA设计-轮转优先级电路
状态跳转图通道优先级译码表设计讲解RTL代码testbench波形状态跳转图通道优先级译码表当处于不同状态时,不同通道的request有不同的优先级编码,00最高,11最低。设计讲解当有多个外设同时发起req请求,DMA的仲裁器将按照其规定的优先级顺序,处理DMA请求。该文章中设计的电路是一个轮转优先级发生器,输入为四个DMA通道的request信号,输出为对应这4个request的仲裁优先级。当上电复位后,系统进入状态1然后DMA等待request1-假如此时req0有效,则会.
2022-02-26 11:10:24
1877
1
原创 【perl】提取命令行option,在shell中传递参数
#!/usr/bin/perluse Getopt::Long;$Getopt::Long::ignorecase = 0;my %opt; #声明一个哈希,用于存放从命令行提取到的optionGetOptions( \%opt, '--null', '--string=s', '--integer=i', '--float=f');#执行命令时,可以带下面这几个选项#-null ,没有参数#-string ,带参数,参数为字符串类型#-integer ,带参数,参数为整数
2022-02-19 17:20:16
1479
2
原创 【perl】多线程机制
#!/usr/bin/perl#打印主线程PIDprint "[1] Dad process PID is:".$$."\n";#-申请一个子线程,产生进程号,#-然后立即进入子线程,直到子线程退出,然后回到主线程。#-该进程号,对子线程返回0,对主线程返回子线程的ID.#(这一机制,方便判断当前处于哪个线程)defined(my $child1_pid = fork) or die "Failed to fork:$!";unless($child1_pid)#-子线程的特点是,进入子线程
2022-02-19 16:26:46
902
原创 grep命令与常用正则
通配符*星号?问号[ ]中括号{ }花括号grep与正则表达式12345egrepfgrep介绍grep之前先介绍一下,正则表达式和通配符通配符shell中的通配符,一般只用于文件名的匹配。简单来说有四种。*星号星号用于匹配0到多个任意字符,下面是使用ls a*c命令前后?问号问号用于匹配一个未知字符,下面是使用ls a?c命令前后[ ]中括号[ab]指,该位置有一个a或者b,下面是使用ls a[bx][bx]c命令前后[^ab]指,该位置有一个字符,但不是a也不是b,下面.
2022-02-09 10:15:44
6026
1
原创 【UVM】virtual sequencer 与 virtual sequence (含可运行示例代码)
m_sequencer 与 p_sequencerm_sequencer是uvm_sequencer类型的句柄,是每个sequence中自带的属性一旦sequence被挂载到某个sequencer,那么m_sequencer就会指向这个sequencer
2022-01-29 23:45:04
1083
2
原创 UVM-sequencer的仲裁与锁定传输
package pack1; //pack1头 import uvm_pkg::*; //+UVM `include "uvm_macros.svh"//+工厂 class item extends uvm_sequence_item; rand int data_auto; `uvm_object_utils_begin(item) `uvm_field_int(data_auto,UVM_ALL_ON) `uvm_object_utils_end
2022-01-29 10:44:04
1363
原创 UVM-使用do系类宏发送item,sequence
> 将上一篇中,使用start方法发送item/sequence的过程,封装成了uvm_do系列宏。上一篇链接:[UVM-使用start发送item,sequence](https://blog.youkuaiyun.com/helloworld573/article/details/122651582?spm=1001.2014.3001.5502)
2022-01-28 12:03:26
964
原创 UVM-使用start发送item,sequence
package pack1; //pack1头 import uvm_pkg::*; //+UVM `include "uvm_macros.svh"//+工厂 class item extends uvm_sequence_item; rand int data_auto; rand int data_noauto; //声明两个data,一个加入自动化域,一个 //不加入 `uvm_object_utils_begin(item) `uvm_field
2022-01-23 14:52:30
2107
原创 UVM-零散知识
1、打印层次信息在test中使用this.print();可在log中打印层次信息2、SV中调用c语言函数c文件:#include<stdio.h>
2022-01-16 09:22:46
458
原创 UVM-TLM1.0
单向数据通信A port blocking put to B impA port blocking get to B impTLMFIFO: A port blocking put, B port blocking get单向数据通信A port blocking put to B imp//TLM -portput//组件A通过TLM,向组件B,put一个object//方式 port ->export -> imp//TLM也支持port连port,export连export,.
2022-01-13 07:33:50
618
原创 UVM-类覆盖、Configdb
//------------UVM基础知识篇------------package pack1; //pack1头 import uvm_pkg::*; //+UVM `include "uvm_macros.svh"//+工厂 //目标类与组件类,目标类可以游离的存在,组件类必须挂在某个位置,或许是 //root或许是其他组件 //目标类 class obj1 extends uvm_object; //顺序1:属性 bit [7:0] data0 = 'haa; b
2022-01-02 15:22:00
434
原创 【verilog】 异步FIFO设计(格雷码转换,跨时钟域)
顶层子模块测试顶层module asyn_fifo #( parameter DEPTH = 256, parameter WIDTH_A = 8, parameter WIDTH_D = 16 )( input w_clk, input rst_n, input .
2021-11-19 09:43:39
732
原创 Verilog 使用延时法进行时钟2倍频(原理模拟)
模拟clk经过组合逻辑延时,生成clk_gate_delay。相异或后得到二倍频信号。注:本代码`timescale 1ns/1nsmodule gate_delay_pll();reg clk;reg clk_gate_delay; //模拟经过数个逻辑门后的时钟信号(有延时)wire dpll_clk;assign dpll_clk = clk^clk_gate_delay;initial begin #300; $finish(); endinitial begin cl
2021-11-17 17:02:41
4565
2
原创 【verilog】双口RAM(仿真模型)
模块代码测试代码仿真波形模块代码/** 双端口ram,宽度为8,深度为16(所用地址线为4根), */module dpram#(parameter RAM_WIDTH = 8 ,parameter RAM_DEPTH = 16,parameter ADDR_LINE = 4)( input wr_clk, input rd_clk, input wr_en, input rd_en, input [RAM_WIDTH-1:0]wr_data, output reg [RAM_WI.
2021-11-14 17:25:38
5393
1
原创 【verilog】 Vivado-Simple Dual-Port RAM IP的使用(Xilinx FPGA,双口RAM,IP使用)
简单双口RAM的IP核配置IP例化顶层测试波形简单双口RAM的IP核分A端口和B端口A为输入端口,负责数据的写入B端口为输出端口,负责数据的读出两端的时钟可以不同,还允许在写入A的同时读B。配置IPvivado 2019.2IP catalog -> Memories & Storage Elements -> RAMs & ROMs & BRAM -> …例化顶层module top( input clka, input wea,.
2021-11-06 13:50:20
8583
1
原创 FPGA PWM调控(Verilog)
PWM1 PWM调控2 代码3 效果图1 PWM调控可调占空比本质上就是计数+译码,计数器从0计到period-1,是pwm的整个周期。译码器实现在,计数值小于pulse_width的时输出高电平,大于pulse_width时输出低电平。从而实现可调节的占空比。2 代码module pwm( input clk, input reset_n,
2021-10-25 11:12:07
7760
原创 【verilog】动态数码管显示(带符号和定点小数,FPGA)
电路设计程序设计顶层模块主模块结果电路设计程序设计顶层模块测试显示内容 “-432.10”module signed_seg_top(clk,rst_n,seg_sel,seg_led); input clk; input rst_n; output [5:0] seg_sel; output [7:0] seg_led;signed_seg f0 ( .clk(clk) , .
2021-07-08 08:49:35
5610
7
原创 【verilog】 AB相旋转编码器驱动(fpga,正交编码器,霍尔编码器驱动)
I 编码器时序II 电路设计III 程序设计IV 仿真1testbench2波形I 编码器时序A的上升沿时候如果B为低电平,则旋转编码器向右转。A的下降沿B为高电平,则一次右转结束。A上升沿时候如果B为高电平,则旋转编码器向左转A的下降沿B为低电平,则一次左转结束。II 电路设计III 程序设计module abcode( clk, rst_n, A, //A相 .
2021-06-26 20:47:32
9852
6
原创 【veriog】正向计时器设计(FPGA,秒表,时钟,正向计时)
硬件部分设计思路代码(verilog)顶层模块(连接计时器与数码管)计时器模块数码管显示模块testbench*(单独对计时器模块进行测试)波形图硬件部分使用6位8段数码管将时间值显示出来设计思路将时间拆分为6个参数: s1 -> 秒个位 s10 -> 秒十位 m1 -> 分个位 m10 -> 分十位 h1; -> 时个位 h10; -> 时十位在异步复.
2021-06-24 13:20:31
6190
1
原创 FPGA IIC连续读写操作(Verilog)
I 说明II AP3216CIII 程式说明IV 模块分解1顶层模块2AP3216C模块(控制连续读写)3按键转状态模块4数码管显示模块5iic协议模块I 说明本程式对IIC协议模块:链接,进行连续读写测试。测试对象为AP3216C传感器,通过对其进行连续的写数据,读数据。从而完成对该传感器的初始化与使用。学习的重点应为使用多路器+状态值 的方法,借助IIC协议模块“iic_done”信号的反馈,来完成连续读写。II AP3216CAP3216C是一款环境光传感器,本程式将通过IIC协议读出此.
2021-03-10 22:44:48
4036
原创 【verilog】一主多从模式下的IIC驱动(三段状态机法)(fpga)
有关IIC时序部分:链接上一篇,一段状态机的iic驱动:链接MIAN/* iic freq = 250khz fpga freq = 50Mhz 向内部寄存器地址位数为8的从机写数据:1->3->4->7 need:type16_type8=0,read1_write0=0. 向内部寄存器地址位数为16的从机写数据:1->2->3->4->7 need:type16_type8=
2021-03-09 21:10:58
3201
原创 【verilog】 FPGA倒计时器设计
思路CODE顶层CODE思路将时间拆分为6个参数: second_1 -> 秒个位 second_10 -> 秒十位 minute_1 -> 分个位 minute_10 -> 分十位 hour_1; -> 时个位 hour_10; -> 时十位在异步复位的时候为上述六个参数赋初始值。然后对50Mhz系统时钟进行计数,计数50M次(即为1s)。然后对六个参数.
2021-02-23 18:28:55
18412
11
基于C51单片机的定时闹钟(2x)
2020-07-05
基于C51单片机的LCD定时闹钟设计
2020-07-05
基于C51单片机的16*16 LED点阵屏电梯运行的楼层显示
2020-07-05
一个时钟 - wd.zip
2020-07-05
myutils.pyc
2020-04-15
用单片机oled显示网上广为流传的坏苹果——badapple图片文件
2020-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人