基础
Student_Yt
这个作者很懒,什么都没留下…
展开
-
Clock Wizard IP核的使用
Clock Wizard IP核的使用DCM()实际上就是一个DDL,可以对输入时钟进行相位移动,补偿,产生倍频和时钟分频。PPL(锁相环) 相当与DCM,除了不能相移时钟,其他都一样。MMCM (模式时钟管理器),实现时钟的分频,倍频,相当于 ppl+dcm结合体(一般选这个)时钟管理IP核并不能产生任意频率的时钟信号。 产生的时钟信号与输入之间仅能是M/N的关系,其中M、N必须是整数。其中 .locked 为1表示,IP核不能正常工作, .locked 为0,表示IP核正常工作。...原创 2022-02-02 09:20:58 · 3821 阅读 · 0 评论 -
FIFO IP核的使用
FIFO IP核的使用什么时候用FIFO:不同时钟域的数据缓存,不同速率模块间的数据传输。(其他方法双口RAM,信号握手,高时钟采样,同步器等)做位宽匹配,实际上也是一种缓存单元,例如单片机的8位数据输出,而DSP可能是16位数据输入,在单片机与DSP链接时就可以使用FIFO,写入一个数据,触发2次读操作。做相位补偿。FIFO 的延时: 异步fifo,空满信号存在延时。FIFO 的full 和 empty 标志写满以后 full 拉高;读空以后 empty 拉高;端口类型。一般选择第一个原创 2022-01-31 23:12:29 · 2072 阅读 · 0 评论 -
Verilog数据位数转换方法(拼接)
方法一:舔“0”将24 * 12位的 i_data_ch0, i_data_ch1 与0000 拼接成了 24*16位方法二:运用状态机将24 * 16位的数据 拼接成32*16原创 2022-01-30 09:05:52 · 2843 阅读 · 0 评论 -
如何测试IP核(RAM为例)
如何测试IP核(RAM为例)(读出数据有两个时钟的延时)了解RAM IP 核的几种工作方式。Simple Dual port RAM (简化双口RAM):A端只能写入,B端只能读出。Single Port RAM(单口RAM):只有一个端口(A),能对数据进行读写。True Dual port RAM(真双口RAM):两个端口(A、B都能进行读写)。由于工程需要这里使用Simple Dual port RAM思路:编写数据计数器,和地址计数器,分别对数据和地址赋值,写入RAM,原创 2022-01-28 09:31:47 · 2084 阅读 · 0 评论 -
一段式状态机,两段式状态机实例
一段式状态机parameter S0 = 3'd0; parameter S1 = 3'd1; parameter S2 = 3'd2; parameter S3 = 3'd3; parameter S4 = 3'd4; parameter S5 = 3'd5;always @ (posedge clk ) begin if ( rst ) begin <= 0; <= 0; <= 0; state <= S0.原创 2022-01-27 09:00:29 · 214 阅读 · 0 评论 -
相同功能多个alway和一个always
相同功能多个alway和一个always下面两种 写法功能是一样的,且占用的逻辑资源也是一样的(资源共享)。 因为在编译过程中编辑器能自动识别相同资源的代码,进行资源共享。 但第一种代码的可读性更高。工程上:尽量非变化语句“完全一致”时使用合并always ,否则还是使用多个always 方便阅读、...原创 2022-01-26 09:00:00 · 378 阅读 · 0 评论 -
DDR4调试学习
5.尝试控制DDR4满速率读写:原因:项目自带(项目带锁)DDR4读写控制只能3个时钟读读一个数据。读写速率太低,DDR4利用率不高。写:读(读出数据有24个时钟延迟)通过编写测试程序查看DDR4能否满时钟写。可见只要 app_rdy 为高就能满时钟写入数据。通过编写测试程序查看DDR4能否满时钟读。通过时序图发现DDR能实现满时钟读写。...原创 2022-01-25 08:30:00 · 1198 阅读 · 0 评论 -
万兆网帧结构
|前导码(8B)|目标MAC地址(6B) |源MAC地址(6B)| 类型/长度(2B)| 数据(46B~1500B)| 帧校验序列(4B) |(1)前导码(Preamble)(64bit):由0、1间隔代码组成,用于通知目标站做好接收准备。(2)目标MAC地址(Destination Address)(48bit/6B):接收帧的工作站地址(3)源MAC地址(Source Address)(48bit/6B):发送帧的工作站地址(4)类型/长度(Type/Length)(16bit/2B)(5)数原创 2022-01-24 16:57:55 · 312 阅读 · 0 评论 -
unit测试以及on-unit
单元测试:‘单元’一般就是指函数,在面向对象的代码中指的是类。不可能只测试系统中的某一个函数或类。(函数常常套其他函数)(类会用到其他类)利用单元测试可以独立地对某一段代码进行测试。我们可以将测试分组以便在某些特定条件下运行某些特定的测试,并在其他条件下运行另一些测试。我们还可以迅速定位错误。如果认为在某段代码中存在着一个错误而且又可以在测试用具中使用这段代码的话,我们通常能够迅速地编写出一段测试,看看我们所推测的错误是不是真的在那里。测试的覆盖种类1.语句覆盖:语句覆盖就是设计若干个测试用例,原创 2021-01-24 10:43:46 · 266 阅读 · 0 评论 -
测试用例的设计
穷举的黑盒和白盒测试都是不可能的。使用特定面向黑盒测试的测试用例设计方法原创 2021-01-23 09:30:27 · 148 阅读 · 0 评论 -
软件中二进制表示十进制的近似度的错误
N 位二进制的小数的精度是1/2 的 N 次方。也就是说,N 位二进制数只能表示(1/2 的 N 次方)的整数倍的数。而M 位十进制的小数的精度是 1/10 的 M 次方。1/10 = 1/2 * 1/5。那么 1/5 这个数(即0.2),就不能用有限长的二进制小数来表示。说高一点,十进制可以表示的小数为:a/(2^b * 5^c) 其中 a、b、c 为整数。二进制可以表示的小数为:a/(2^b) 其中 ab 为整数。...原创 2021-01-22 20:26:10 · 151 阅读 · 0 评论 -
《软件测试的艺术》学习记录
软件测试的艺术:(测试是发现错误而执行程序的过程)一.端正自己的态度:测试是为了发现错误而执行程序。而不是证明软件不纯在错误。黑盒测试:(数据驱动测试或输入/输出驱动测试)(不太可能实现,1.经济学2.逻辑上)穷举输入测试:将可能的输入条件当测试用。白盒测试:(逻辑驱动测试)(不太可能实现1.逻辑路径太多2.不经济)穷举路径测试:测试执行程序的所有控制流路径。测试原则:1.测试用例中一个必需部分是对预期输出或结果进行定2程序员应当避免测试自已编写的程序,编写软件的组织不应当测试自己编"的软件原创 2021-01-22 20:10:40 · 133 阅读 · 0 评论 -
(2021/1/17笔试试题)C语言判断3个数能否构成直角三角形
思路:首先判断输入值能否构成三角形(这里可以排除输入不能构成三角形,和输入为负数 的情况)。在通过直角三角形的边的关系,判断是否为直角三角形软件:Visual C++ 6.0(成功实现) 为本科时学习C语言时最常使用的软件。尝试使用Visual Studio Code(未成功实现) 学习Html 时使用的软件,下载了C/C++编译器,但配置文件好像没弄好,运行程序时会中断.代码:#include <stdio.h>int main(void) { float原创 2021-01-20 09:41:08 · 1735 阅读 · 0 评论 -
学习记录(持续改进):COMS反相器
COMS方向器(非门)。COMS晶体管与非门,或非门。与非门构成的与门,或非门构成的非门。OD门(漏极开路输出门电路)原创 2021-01-07 16:03:58 · 786 阅读 · 1 评论 -
fpga实现流水灯以及tb代码
本实验为某公司校招问题:本人在2021/1/17日完成. 分享给大家.使用FPGA设计一个简单的流水灯程序,红绿蓝三个LED闪烁即可。本文章提供Verilog的源代码,验证代码,以及简单的外围电路。Verilog代码:`timescale 1ns / 1psmodule led_flowing( input rst_n, input clk, output reg[2:0] led ); reg [12:0] counter; //编写Tb时采用1us的时钟信原创 2021-01-18 10:05:07 · 2301 阅读 · 0 评论 -
TestBench的功能和编码原则
一.Test Bench 主要功能:简单来说就是:a.通过Verilog程序的行为描述,为待测信号提供激励信号b.设置理想结果。c.将输出结果与理想结果比较,判断内部功能结构是否正确。Test Bench 编码原则(全加器为例子)全加器Verilog实现代码:`timescale 1ns / 1psmodule add_4b( input clk, input rst, input [3:0] a, input [3:0] b, input cin原创 2021-01-09 13:17:10 · 1160 阅读 · 0 评论 -
用HTML实现旋转魔方!很有意思
实现效果:(旋转的截图体现不出来,可以自己下个sublime 复制我给的代码自己试试)。鼠标放在魔方上效果实现代码:<!DOCTYPE html><html><head> <title>旋转3D正方体</title> <meta charset="utf-8"> <style type="text/css"> img { width: 200px; height: 200px;原创 2021-01-08 19:58:21 · 1719 阅读 · 5 评论 -
学习记录(持续学习中): Verilog中四种循环语句:for循环,forever循环,repeat循环,while循环
1.for循环for是一种条件循环,在条件成立时才进行循环。语法形式 :for(初始赋值语句 ;条件表达式 ;赋值修改)语句或语句块;用for循环语句对存储器进行清0初始化:for(n=0; n < mem_size; n = n+1) mem(n)=32'h0;2.forever循环forever循环是一种无限循环。循环体内必须采用某种形式的时序控制,否则forever将在0时刻后一直循环下去。用forever语句产生时钟:initial begin clock = 0;原创 2021-01-07 22:11:39 · 10169 阅读 · 1 评论 -
学习记录(持续学习中):阻塞和非阻赛赋值,和使用原则
阻塞式赋值1.特点:a.当前语句执行完后才会执行下一条语句。赋值是立即发生的(无指定延时)b.执行过程中其他同类赋值语句必须停止工作。2.赋值方式:a.未指定延时赋值:目标变量名 = 驱动表达式;b.指定延时赋值方式有两种:C = #2 A+B;#2 C = A+B;非阻塞赋值1.特点:a.语句执行不会影响同一过程块中其他语句执行(不会阻塞)。b.多条非阻塞是同步赋值操作,具有并行执行的特点。2.赋值方式a.未指定延时: 目标变量名 <= 驱动表达式 ;b.指定延时赋原创 2021-01-07 19:23:03 · 139 阅读 · 0 评论