- 博客(98)
- 资源 (18)
- 收藏
- 关注
原创 Verilog各类分频器设计详解
Verilog各类分频器设计详解分频器是时序电路的基本器件,它的功能是对系统时钟或其他时钟进行分频产生所需要的时钟信号。分频有两种方式:一是通过HDL语言建模产生所需要的时钟信号,二是利用开发工具的PLL进行分频。前者分频灵活,需编写代码实现;后者使用场景受限,因为有的低端FPGA没有PLL,但PLL的分频效果更好,而且在进行小数分频时也比较容易实现。本文首先尝试用HDL语言建模方式设计各种类型的分频器,最后给大家简单介绍一下PLL的使用。如有不足之处还望大家批评指正。偶数分频器我们先从最简单的偶数分
2021-04-08 11:39:49
16995
5
原创 自己动手写CPU(7)转移指令的实现
自己动手写CPU(7)转移指令的实现分支延迟槽在MIPS五级流水线中,一条指令被分成了五个阶段:取指、译指、执行、仿存、回写。当第一条指令的执行阶段结束时,第二条指令的译指阶段也已经结束了。那么如果第一条指令是分支跳转指令,那么在执行阶段才会知道要不要跳转以及跳转的目标指令地址是多少。而此时第二条指令已结束译指阶段,第三条指令已结束取指阶段。如果这个时候CPU直接跳转到目标指令地址去执行,那么就需要清空现有流水线,从新的指令地址开始取指、译指。这是因为分支跳转后面的指令不能被执行啊,程序已经跳转了,也
2021-04-07 21:34:41
2698
原创 自己动手写CPU(6)流水线暂停、乘累加减与除法器的实现
自己动手写CPU(6)流水线暂停、乘累加减与除法器的实现流水线暂停因为OpenMIPS设计乘累加、乘累减、除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕。OpenMIPS采用的是一种改进的方法:假如位于流水线第n阶段的指令需要多个时钟周期,进而请求流水线暂停,那么需保持取指令地址PC的值不变,同时保持流水线第n阶段、第n阶段之前的各个阶段的寄存器不变,而第n阶段后面的指令继续运行。为实现CPU的流水线暂停功能,我们设计添加了CTRL模块,其作用是接收各阶段传
2021-03-28 22:23:39
1714
1
原创 自己动手写CPU(5)简单算术操作指令实现_1
自己动手写CPU(5)简单算数操作指令实现_1指令介绍MIPS32指令集架构定义的所有算术操作指令,共有21条 共有三类,分别是:简单算术指令乘累加、乘累减指令除法指令算术指令操作介绍一共有15条指令分别是:add、addi、addiu、addu、sub、subu、clo、clz、slt、slti、sltiu、sltu、mul、mult、multu1.add、addu、sub、subu、slt、sltu指令由指令格式可以看出这六条指令指令码都是6’b000000即SPECIAL类,而
2021-03-23 19:48:52
1553
5
原创 自己动手写CPU(4)移动操作指令的实现
自己动手写CPU(4)移动操作指令的实现指令说明MIPS32指令集架构中定义的移动操作指令共有6条: movn、movz、mfhi、mthi、mflo、mtlo,后4条指令涉及对特殊寄存器HI、LO的读/写操作。HI、LO寄存器用于保存乘法、除法结果。当用于保存乘法结果时,HI寄存器保存结果的高32位,LO寄存器保存结果的低32位;当用于保存除法结果时,H寄存器保存余数,LO寄存器保存商。指令格式MOVN当功能码为6’b001011时,表示是movn指令。指令用法为:movn rd, rs,rt
2021-03-23 08:43:17
1089
1
原创 计算机组成与架构综述学习报告
计算机组成与架构综述学习报告计算机系统的指令集ISA的演进过程是怎样的?第一阶段关键词:集成电路、CISC、432、8086、IBM PC集成电路在摩尔定律的预言下快速发展,使得CPU的控制单元的存储空间变大,从而能实现更复杂的指令集(CISC)。戈登·摩尔(因特尔的创始人之一)启动了iAPX-432项目,并在上面投入了大量的人力物力,对其寄予厚望,希望该指令集延续英特尔的一生。但其存在严重的性能问题,最终在1986年停止使用。与此同时,由于该项目未能在指定时间按时交付,Intel给了新团队52周的时
2021-03-16 23:59:09
399
1
原创 自己动手写CPU(3)逻辑、移位操作与空指令
自己动手写CPU(3)逻辑、移位操作与空指令指令说明MIPS32指令集架构中定义的逻辑操作指令有8条: and、andi、or、ori、xor、xori、nor、lui,其中 ori指令已经实现。MIPS32指令集架构中定义的移位操作指令有6条: sll、sllv、sra、srav、srl、srlv。MIPS32指令集架构中定义的空指令有2条: nop、ssnop。其中 ssnop是一种特殊类型的空操作,在每个周期发射多条指令的CPU中,使用ssnop指令可以确保单独占用一个发射周期。OpenMIP
2021-03-12 09:38:27
3269
9
原创 自己动手写CPU(2)流水线数据相关问题
自己动手写CPU(2)流水线数据相关问题问题定义流水线中经常有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些“相关”会降低流水线的性能。流水线中的相关分为以下三种类型。结构相关:指的是在指令执行的过程中,由于硬件资源满足不了指令执行的要求,发生硬件资源冲突而产生的相关。比如:指令和数据都共享一个存储器,在某个时钟周期,流水线既要完成某条指令对存储器中数据的访问操作,又要完成后续的取指令操作,这样就会发生存储器访问冲突,产生结构相关。数据相关:指的是在流水线
2021-03-08 09:29:45
1287
5
原创 自己动手写CPU(1)五级流水线及CPU第一条指令ori
自己动手写CPU(1)五级流水线及CPU第一条指令ori动机不知为何研一的自由时间突然多起来,可能人一闲下来就容易焦虑吧,hhhhhh。正好之前看到一本《自己动手写CPU》,就按照此书从头实做一遍MIPS指令集的CPU,也当做对大学课程的总结。之前看龙芯杯比赛的代码震惊到我了,想想那堆大佬本科在搞这东西而我本科在瓜瓜地刷分,感叹人之间的差距真的好大。痛定思痛,还是先动手做起来这才能假意安慰自己,我好像也不错。闲言少叙,让我们开始吧!由于作者提供了各章实现的具体代码,所以该系列博客主要记录我过程中有哪些
2021-03-07 16:10:27
6210
2
原创 HDLBits答案汇总
前言该博客为本人做HDLBits习题时的心得记录总结,欢迎大家一起交流进步。HDLBits网站链接Verilog LanguageBasicsVectorsModules:HierarchyProceduresMore Verilog FeaturesCircuitsCombinational LogicBasic gatesMultiplexersArithmetic CircuitsKarnaugh Map to CircuitSequential LogicLatche
2021-02-18 22:38:10
95587
7
原创 HDLBits答案(25)_编写Testbench
Verification:Writing TestbenchesHDLBits链接前言今天更新HDLBits最后一章的习题:编写Testbench。题库Clock提供了如下描述的模块:module dut ( input clk ) ;要求传入频率为10ps的时钟,初始为0,如下图所示。Solution:module top_module (); reg clk; initial begin clk = 1'b0; end alw
2021-02-18 14:02:08
4245
9
原创 HDLBits答案(24)_由波形图描述电路
Build a circuit from a simulation waveformHDLBits链接前言今天更新HDLBits习题由波形图描述电路的部分,看图写代码。题库Combinational circuit 1由图可见,q=a&bSolution:module top_module ( input a, input b, output q );// assign q = a & b; // Fix meendmodule
2021-02-18 13:26:22
3123
4
原创 HDLBits答案(23)_找BUG
Finding bugs in codeHDLBits链接前言今天更新HDLBits习题部分找BUG部分,比较简单,大家看一下即可。题库8bit_2_1_Mux原Code:module top_module ( input sel, input [7:0] a, input [7:0] b, output out ); assign out = (~sel & a) | (sel & b);endmodule从上面的代码中
2021-02-16 14:25:48
3187
2
原创 HDLBits答案(22)_基于有限状态机的计数器
基于有限状态机的计数器HDLBits链接前言今天更新搭建更大的电路部分的习题,内容主要跟计数器和有限状态机有关。题库Counter with period 1000构造一个0-999的计数器,同步高电平复位。Solution:module top_module ( input clk, input reset, output [9:0] q); always @(posedge clk) begin if(reset) begin
2021-02-16 13:07:32
4548
9
原创 HDLBits答案(21)_Verilog有限状态机(8)
Verilog有限状态机(8)HDLBits链接前言今天继续更新状态机小节的习题。题库Q2a:FSM正宗的FSM题,没啥说的,看图写代码。Solution:module top_module ( input clk, input reset, // Synchronous active-high reset input w, output z); parameter A = 3'd0, B = 3'd1, C = 3'd2; pa
2021-02-08 15:21:14
2360
8
原创 HDLBits答案(20)_Verilog有限状态机(7)
Verilog有限状态机(7)HDLBits链接前言今天继续更新状态机小节的习题。题库Q3a:FSM题目里说当s为0时,进入B状态,然后会检查w的值,如果在接下来的三个周期中w值恰好有两个周期都为1,那么z输出1,否则z输出0。注意,由示例的波形图看应该是不重叠检测。Solutionmodule top_module ( input clk, input reset, // Synchronous reset input s, input w,
2021-02-08 10:37:29
3438
3
原创 HDLBits答案(19)_Verilog有限状态机(6)
Verilog有限状态机(6)HDLBits链接前言今天继续更新状态机小节的习题。题库Fsm hdlc同步帧检测涉及对数据的连续位流进行解码,以寻找指示帧(数据包)开始和结束的位模式。 6个连续的1(即01111110)是表示帧边界的“标志”。 为了避免数据流意外包含“标志”,发送方必须在接收方必须检测并丢弃的每5个连续的1秒后插入一个零。 如果连续7个或更多1,我们还需要发出错误信号。可以通过状态机来识别下面三种序列:0111110:表示5个1后面的0bit需被忽略;01111110
2021-02-07 18:38:29
4400
10
原创 HDLBits答案(18)_Verilog有限状态机(5)
Verilog有限状态机(5)HDLBits链接前言今天继续更新状态机小节的习题。题库题目描述1:第一道题目比较容易,题目中的in信号包含了一个起始位(0),8个数据位和一个停止位(1),开始in为1,也就是IDLE状态,当in为0时,进入START状态,然后经过8个周期,如果in为1,则进入STOP状态,接着如果in为0,进入第二轮START状态,否则进入IDLE状态。这里我用了很多个状态,实际上可以用计数器来代替中间的8个状态,这里是8个周期,如果是100个、200个周期,那么需要10
2021-02-07 14:48:17
5332
9
原创 Modelsim10.7中文注释乱码问题
Modelsim10.7中文注释乱码问题前言笔者在使用Modelsim10.7版本时遇到中文注释乱码的问题,一般中文乱码都是Encoding的参数问题。解决方法之后点击Apply应用即可。改变编码方式后,中文注释可以正常显示,如下图所示...
2021-01-31 10:12:07
4048
4
原创 HLS:@E Simulation failed SIGSEGV
HLS:@E Simulation failed: SIGSEGV.前言在HLS工具中使用C仿真时报如下错误,经定位问题后发现有数组开辟方式的问题。错误描述@E Simulation failed: SIGSEGV.ERROR: [SIM 211-100] CSim failed with errors.错误定位开辟数组空间时用到这句unsigned int * src_img[SIZE*BAND];其中SIZE与BAND均为常量;HLS的C仿真中不能用C语言中的这种方式来定义数组,需
2021-01-17 11:20:46
4450
原创 认知网络知识点及例题总结
前言该博客为认知网络课程知识点与例题的总结,其中不乏错误,还望大家指正。文章的电子版(直接打印)下载链接见文末。更新:20年最新试题题型有所变动,下载链接见文末。知识点部分第一章1.1认知无线电1.认知无线电的概念认知无线电是指具有自主寻找和使用空闲频谱资源能力的智能无线电技术,具有侦测、适应、学习、机器推理、最优化、多任务以及并发处理/应用的性能。2.认知无线电提出的背景随着无线通信技术的飞速发展,频谱资源变得越来越紧张。为保护频谱资源,频率管理部门专门分配了特定的授权频段以供特定通信
2020-12-31 17:55:57
1463
2
转载 linux之awk命令学习笔记
Linux之awk命令学习笔记前言AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。语法awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file[-F|-f|-v] 大参数,-F指定分隔符(字符串或正则表达式),-f调用脚本,-v定义变量 var=va
2020-12-24 22:17:34
296
原创 System Verilog学习小结
System Verilog课程小结第一周问题1:设计人员和验证人员他们的协作关系体现在哪些地方?1.设计人员和验证人员都需要围绕功能描述文档开展工作2.设计只有经过充分量化验证,才有信心去流片3.验证人员需要懂设计才能很好地向设计人员反馈设计漏洞4.设计初步实现后即需要验证工作的加入5.在系统由低向高的集成过程中,验证与设计需在每一层展开工作,确保每一个阶段的充分性问题2:为什么芯片验证的重要性目前越来越高?答:早期的芯片开发工作由于晶体管数目少,电路规模也小,因而搭设电路时的难度和精度
2020-12-09 19:50:32
4486
1
原创 HDLBits答案(17)_Verilog有限状态机(4)
Verilog有限状态机(4)HDLBits链接前言今天继续更新状态机小节的习题。题库题目描述1:One-hot FSM独热编码,根据状态转移图输出下一状态与结果。Solution1:module top_module( input in, input [9:0] state, output [9:0] next_state, output out1, output out2); parameter S0 = 4'd0;
2020-11-26 11:44:14
4905
8
原创 HDLBits答案(16)_Verilog有限状态机(3)
Verilog有限状态机(3)HDLBits链接前言今天继续更新状态机小节的习题,本章主要编写Lemmings Game部分。题库题目描述10:Game Lemmings1:有个小人左右走,它只有两种状态:向左走和向右走;左边碰到东西之后它就向右走,右边碰到东西之后它就向左走,两边都碰到东西就跟当前方向的反方向走;复位时小人向左走Solution10:module top_module( input clk, input areset, // Freshly br
2020-11-25 18:38:17
5416
8
原创 图像无损、有损压缩方法调研
图像无损、有损压缩方法调研无损压缩无损压缩的压缩比相对较小,一般只能获得1-5倍的压缩比。常见的图像无损压缩编码方法主要有霍夫曼编码、算术编码、行程编码和LZW编码。以上四种编码都属于统计编码的范畴,消除的是编码冗余,而预测编码消除的是像素间冗余。预测编码的基本思想建立在图像中邻近像素间高度相关的事实基础上。预测编码的突出的技术特点是不直接传送像素值,而对实际像素值与它的一个预测值之间的差值进行编码和传送,这种差值称为预测误差。有损压缩灰度级量化压缩该算法采用低比特截断。如对于8比特图像,若将图
2020-11-06 21:11:02
2452
原创 FPGA学习之路—Vivado与Modelsim联合仿真
Vivado与Modelsim联合仿真笔者在学习FPGA过程中遇到了如何使用Vivado和Modelsim进行联合仿真的问题,特此记录。首先确定版本笔者Vivado用的是2018.3版本,先是随便下了个Modelsim10.1c的版本,到编译库文件时报错了,后来发现是俩款软件的版本不匹配。所以大家在进行联合仿真之前先核对两个软件的版本是否对应,不用到最后再卸载重装。Vivado Design Suite 2018.3Mentor Graphics ModelSim SE/DE/PE (10.6c)
2020-11-05 15:33:54
32358
16
原创 HDLBits答案(15)_Verilog有限状态机(2)
Verilog有限状态机(2)HDLBits链接前言继续更新状态机小节的习题。题库题目描述6:Solution6:module top_module( input in, input [3:0] state, output [3:0] next_state, output out); // parameter A=0, B=1, C=2, D=3; // State transition logic: Derive an equatio
2020-11-04 10:22:19
5976
4
原创 HDLBits答案(14)_Verilog有限状态机(1)
Verilog有限状态机(1)HDLBits链接前言今天来到了重要的部分:状态机。对该部分内容,可能不会一次更新一个小节;一方面是题目难度,另一方面是代码量过大;所以该节会分批更新,大家见谅。题库题目描述1:实现下图所示的摩尔状态机,复位为异步复位。Solution1:module top_module( input clk, input areset, // Asynchronous reset to state B input in, outp
2020-11-03 19:50:43
7880
12
原创 HDLBits答案(13)_Verilog移位寄存器附加题
Verilog移位寄存器HDLBits链接前言今天更新一节内容,该小节题目不多,共三道,但技巧性挺强。题库题目描述1:各单元的下一状态是此时当前单元相邻两位的异或。在这个电路中,创建一个512单元系统(q(511:0)),并在每个时钟周期中前进一个时间步长。加载(load)表明系统的状态应该加载data[511:0]至q中,假设边界(q[0]和q[512])都为零。Solution1:module top_module( input clk, input load,
2020-11-03 17:11:13
6556
6
原创 HDLBits答案(12)_Verilog移位寄存器
Verilog移位寄存器HDLBits链接前言今天更新一节寄存器相关内容,其中涉及CRC校验的内容是用线性反馈移位寄存器搭建而成的。题库题目描述1:构建一个4bit的移位寄存器(右移),含异步复位、同步加载和使能areset:让寄存器复位为0load:加载4bit数据到移位寄存器中,不移位ena:使能右移q:移位寄存器中的内容Solution1:module top_module( input clk, input areset, // async acti
2020-11-02 16:46:22
9157
4
原创 HDLBits答案(11)_Verilog计数器
Verilog计数器HDLBits链接前言今天更新一个小节内容:计数器。计数器可以说是我们接触数字电路以后用的最频繁的模块之一了,无论是项目、应聘还是将来的工作,计数器都无处不在。题库题目描述1:构建一个从0到15的4位二进制计数器,周期为16。同步复位,复位应该将计数器重置为0。Solution1:module top_module ( input clk, input reset, // Synchronous active-high reset
2020-10-10 20:34:03
11606
7
原创 Questasim10.6c下载与安装教程
Questasim安装与破解教程安装前提:系统要求:Win10 64位注意:安装路径及以后的项目路径、文件路径等都不要有中文和空格。安装破解步骤:关闭电脑的杀毒软件和防火墙,双击安装包中的questasim-win64-10.6c.exe进行安装,推荐安装目录:D:/questasim64_10.6c。安装完成后不要打开软件先进行破解。复制和此文档同一压缩包内的’patch_dll.bat’ 和’MentorKG.exe’和’license.dat’和’MakeLic.bat’(所
2020-09-27 11:51:25
15192
16
原创 HDLBits答案(10)_D触发器、同步与异步复位、脉冲边沿检测
D触发器、同步与异步复位、脉冲边沿检测HDLBits链接D触发器定义:D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。在这里解释边沿触发的D触发器,D触发器在时钟脉冲CP的前沿(正跳变0→1)发生翻转,触发器的次态(下一个状态)取决于CP的脉冲上升沿到来之前D端的状态,即次态Q=D。因此,它具有置0、置1两种功能。由于在CP=1期间电路具有维持阻塞作用(即触发器的输出不变),所以
2020-09-15 19:53:51
18125
7
原创 HDLBits答案(9)_卡诺图与最简SOP式
卡诺图与最简SOP式HDLBits链接真值表定义真值表是表征逻辑事件输入和输出之间全部可能状态的表格。以1表示真,0表示假。从真值表到标准式SOP标准式:找出真值表中所有输出为1的表项,按照输入的情况,为1用变量表示,为0则用反变量表示,得出若干乘积项,然后求和。POS标准式:找出真值表中所有输出为0的表项,按照输入的情况,为1用反变量表示,为0则用原变量表示,得出若干求和项,然后求积。举例说明有如下真值表ABCD000000100
2020-09-09 15:48:05
10219
11
原创 HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计
半加器、全加器和行波进位加法器原理与设计HDLBits链接半加器定义:半加器用于计算2个单比特二进制数a与b的和,输出结果sum(s)和进位carry(c)。在多比特数的计算中,进位c将作为下一相邻比特的加法运算中。其真值表如下所示。题目描述:实现一个半加器。半加器将两位比特相加(不带进位)并产生一个1bit结果和一个进位。Solution:module top_module( input a, b, output cout, sum ); assign {cou
2020-09-03 17:23:10
9762
3
原创 HDLBits答案(7)_Verilog多路选择器
Verilog多路选择器HDLBits链接定义多路选择器(Multiplexer)简称多路器,它是一个多输入、单输出的组合逻辑电路,在数字系统中有着广泛的应用。它可以根据地址码(选择码)的不同,从多个输入数据流中选取一个,让其输出到公共的输出端。部分练习题题目描述1:实现一个位宽为1的2-1的多路选择器。当sel=0,选择a,当sel=1,选择b。Solution1:module top_module( input a, b, sel, output out ); as
2020-09-01 11:53:26
8449
8
原创 Markdown中如何输入上标、下标?
CSDN博客Markdown上下标如何输入(如指数等)输入上标,如x2,Markdown代码为x^2^;输入下标,如x0,Markdown代码为x~0~;
2020-08-31 21:35:07
11024
1
原创 HDLBits答案(6)_硬件模块设计的思考方式
硬件模块设计的思考方式HDLBits链接基本的逻辑门操作题目描述1:将输入端口in和输出端口out连接。Solution1:module top_module ( input in, output out); assign out = in;endmodule题目描述2:将输出out接地。Solution2:module top_module ( output out); assign out = 1'b0;endmodule题目描述3:实现或非门操
2020-08-31 21:20:58
10874
2
原创 HDLBits答案(3)_Verilog模块的例化与调用
HDLBits_Verilog模块的例化与调用HDLBits链接模块只要使用的所有模块都属于同一个项目,就可以通过在模块内部实例化一个模块来创建模块的层次结构。一个模块的代码不能在另一个模块的主体中编写(不同模块的代码不是嵌套的)。有两种常见的方式将wire信号连接到端口上,分别是按位置和按名称连接。按位置:mod_a instance1 ( wa, wb, wc );按名称:mod_a instance2 ( .out(wc), .in1(wa), .in2(wb) );By posit
2020-08-30 16:03:17
17881
2
基于PYNQ复现的BNN重建项目-lfcW1A2
2020-08-13
基于PYNQ的BNN重建项目-lfcW1A1
2020-08-13
cnvW2A2_output.zip
2020-08-12
cnvW1A2_output.zip
2020-08-12
cnvW1A1_output.zip
2020-08-12
xilinx-tiny-cnn.rar
2020-08-12
finn-hlslib.rar
2020-08-12
PYNQ-Z2矩阵乘法加速.rar
2020-06-15
Yolov2复现所需文件.rar
2020-06-13
Verilog原码二位乘法器
2020-05-05
基于Verilog设计单总线8位ALU
2020-05-04
SPI协议Verilog实现
2020-05-03
uart串口verilog源码及详细设计
2020-04-30
Monty Hall问题(车羊问题)matlab程序
2019-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅