自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 牛客网-Verilog篇

找实习所需要用到的训练题目

2022-06-14 15:47:16 576 1

原创 HDLBits 写测试平台系列

首先一个测试模块 需要将时间单位定义下来:`timescale 1ps/1ps 第一个1ps代表 时间单位为ps 第二个1ps代表时间精度为1ps一般来说,输入类型写为reg输出类型写为 wire然后要将相应的DUT模块进行例化(将tb里面的输入和输出以及定义的中间变量传递进去)。最后 利用一个initial begin end 过程块来进行对输入在不同时刻进行不同的赋值如果需要用到时钟的话,就利用 always # xx clk = ~clk ;这里也可以用initial beginc

2022-06-09 11:12:40 368

原创 HDLBits Bulid a circuit from a simulation wavefrom 系列

以下博客分析格式和部分代码参考学习:HDLBits 系列(41)根据仿真波形来设计电路之组合逻辑题目链接直接画出相应的卡诺图Sim/circuit5原题链接根据波形图,就可以看出,这个可以利用case 语句来判断选择那个作为输出。............

2022-06-08 14:32:04 213

原创 HDLBits Bugs addsubz

Bugs addsubz这道题其实主要是由于if语句而引起的锁存器现象,加上else语句即可。

2022-06-08 10:34:22 338

原创 HDLBits Bugs mux4

Bugs mux4首先仿真跑一遍:会发现时序图:分析:1.当sel2’b00的时候,会发现选择的是aa,当sel2’b01的时候,会发现选择的是bb。当sel2‘b10的时候,选择的是cc,因此,可以判断出sel[1]是作为最终输出选择。当sel[1]等于0的时候,将是在输入a和b中选择,因此a和b处于同一个二路选择器当中,c和d处于同一个选择器。而且sel[0]0的时候,选择的是输入a,为1的时候选择的输入b。当sel2’b11的时候,发现选择的是dd,而当sel2’b10时候,选择的是cc,

2022-06-08 10:17:28 507

原创 HDLBits Exams/review2015 fancytimer

Exams/review2015 fancytimer历时2个小时,终于把这道题给弄得差不多了,但是还是有一些细节没弄明白,特此记录一下。根据题意得要求 可以大概划分为以下几个电路:1.序列检测模块2.移位断定延迟时间模块3.计数器模块4.检测ack模块如果刷过HDLBits 就可以知道这道题得前面几道题,其实对应的就是这几个小模块电路因此,参考前面几个模块电路,可以给出如下代码:其中S1,S11,S110状态是处于序列检测,B0,B1,B2,B3是处于4个时钟周期内用来断定延迟时间的状态

2022-06-08 08:50:49 313

原创 HDLBits Exams/review2015 fsmshift

Exams/review2015 fsmshift画出相应的状态图,便可得到相应的代码:参考博客:Exams/review2015 fsmshift

2022-06-07 09:30:34 144

原创 HDLBits Exams/2013 q2bfsm

Exams/2013 q2bfsm

2022-06-01 15:35:14 473

原创 HDLBits Exams/2014 q3fsm

1.原题复现题目链接:Exams/2014 q3fsm2.思路和代码根据题意,可以分为两个部分,第一部分为状态机,包括A和B。第二部分为在状态B的时候,需要对另外一个输入进行计数,且三个时钟周期为一循环。因此,第二部分可以细分为:1.需要一个couter用来对三个周期内的输入w进行计数 2.需要一个counter用来对时钟周期次数进行计数,且每记三次后,重新归1开始计数。刚开始的思路是用的for循环,后来发现不对,因为在一个时钟上升沿里面,for循环3次是不合题意的,题目要求的是在三个时钟周期内计数

2022-05-31 14:56:03 281

原创 HDLBits Exams/ece241 2014 q5a

1.原题复现题目链接:https://hdlbits.01xz.net/wiki/Exams/ece241_2014_q5a2.思路以及代码本题刚开始卡了很久没有思路,对于具体的将状态机运用到一些具体例子上的逻辑思维还是比较欠缺的。最后,通过看别人的博客,终于弄明白了本题的要求:首先还是复习一下补码的规则:1.正数下,补码就是原码2.在负数时候,补码是由负数的原码取反之后+1获得(可以理解为:从低位到高位(不包括最高位),当遇到第一个1之后,其余的高位全部取反,最后再加上最高位1)比如说:

2022-05-31 10:48:34 1221 2

原创 HDLBits Exams/ece241 2013 q8

1.原题复现Exams/ece241 2013 q82.解题思路可以看出题目本身还是比较简单的,但是要注意的是这题的要求是利用Meanly来做,当然通过这道题,也要寻找出Meanly和Moore的类型的不同。利用Meanly思路来解题:Meanly的输出的明显特点就是:输出不仅与当前的状态有关,而且也会受到当前输入的影响。如下图的上方状态图所示:在本题中,当z=1的时候,要求为当前状态为s2而且满足同时x=1。同时也可以看出,相比Moore思路来写的话,将会少一个状态S3。给出相应的代码

2022-05-30 15:05:40 488

原创 VCS和verdi操作知识点记录

1.在makefile当中使用 VCS进行编译时候,目录下面是没有创建 worklib的 会出现如下图所示错误:解决方案:在相应的makefile目录下,创建一个setup使用如下命令:gvim synopsys_sim.setup来创建一个相应的work当然,在该文件夹里面需要再输入如下内容,才能成功进行编译--VCS MX setup file for ASIC--Mapping default work directoryWORK > DEFAULTDEFAULT : ./

2022-05-29 22:10:04 370

原创 HDLbits Fsm hdlc

原题复现代码刚开始的错误思路是,把IDLE状态设置为输入为0时候的初始状态,结果发现这样做是不可行的,原因很简单:假设IDLE状态是初始状态,根据题意,复位后的初始状态即是0,并不是依靠in输入0来判断作为初始位,也是以第一个1作为起始位来进行判断。也就是说,本身是不需要判断in是否为0,从而进入连续读取状态的。因为给出了默认值就是0,直接判断in是否为1,从而决定是否进入下一个状态。错误思路想法1: 换句话说,不需要判断in为1的上一个节拍的in输入是否为0,我们只是要求判断出连续的5个1或者6

2022-05-29 11:44:09 135

原创 HDLBit 之 Fsm serialdp

1.原题复现代码思考过程首先,可以根据上一题比较而言,这一题不过是多了一个校验位(这里要注意的是:这个校验位在停止位之前,校验位和停止位是分开的两个不同的bit,刚开始没写出来,就是因为这里没弄清楚)上一题的题目见蓝色部分点击进入https://hdlbits.01xz.net/wiki/Fsm_serialdata然后贴上该题的串行数据代码:module top_module( input clk, input in, input reset, // Synch

2022-05-28 17:03:52 323

原创 IC验证学习笔记(一)

1.关于数组的维度大概有如下几种 以int 为例子:本例子是以二维度实现的:int a [i] [j]//维度都在变量的右侧,从左到右,维度依次降低 一共有i行j列int [i] b [j]// 变量左右侧都有维度,高维度在变量右侧,低维度在变量左侧,一共有j行i列int [i] [j] c// 维度都在变量左侧,从左到右,维度依次降低,一共有i行j列2.关于非组合型和组合型还是以上面例子来进行说明通常的,我们在verlog中会见到这样的RAM: reg [7:0] RAM [0:409

2022-05-27 15:23:24 168

原创 HDL Fsm onehot

1.原题复现https://hdlbits.01xz.net/wiki/Fsm_onehot2.代码刚开始采用的是独热码形式的程序来进行测试,结果发现不行:经过仿真提示之后,才发现测试原来并非以一位的独热码形式来进行的,因此我们应该寻找另一种办法经过在网上寻找之后,才发现题目的是意思是,并非每次输入当中,只有一位为高电平,也有可能是两位的独热码或者其他一些自由的输入,因此,采用参数定义独热码形式是不可行的。同时,也不能采用case语句,因为输入情况千变万化,无法列写完全。因此,提出的方法是

2022-05-26 14:51:04 159

原创 HDL Count clock

1原题复现2.代码module top_module( input clk, input reset, input ena, output pm, output [7:0] hh, output [7:0] mm, output [7:0] ss); reg [3:0] ss_gewei=0; reg [3:0] ss_shiwei=0; reg [3:0] mm_gewei=0; reg [

2022-05-23 08:50:08 172

原创 HDL Dualedge

1.原题复现2.代码自己的做法:但经过查询对比之后,发现这样做会有一个毛刺(gitch)的问题存在,至于为什么会出现毛刺:可以参考该篇博客FPGA中如何实现双边沿采样? 因此,给出了第二种代码做法:补充一下异或的用法:1.两个相同的数字异或结果为02.如果其中一个数为0,那么结果将会是另外一个数。相关的参考博客为:verilog实现双边沿触发器Dual-edge triggered flip-flop...

2022-05-20 10:18:38 129

原创 HDL Edgedetect 和Edgedetect2

1原题复现2.代码第一种方法:上述代码在ISE仿真软件中生成的RTL Schematic为:第二种方法生成的RTL Schematic 图:总结:可见不同的代码,将会生成不同的RTL原理图

2022-05-17 15:10:18 176

原创 HDL Exams/ece241 2014 q4

1.原题复现2.代码3. 本题所需注意点:刚开始的时候没做出来,参考网上的答案后,发现是自己没注意到题目的细节 :从这句话可以得出,在开始前,所有的Q输出值都被初始化为0了。换句话说,此时Z的输出值经过或非门后,初始化为1;那么怎么对变量进行初始化赋值呢?我们可以使用inital语句来对一些变量进行初始化赋值比如initial z =1;根据题目: 我们需要生成三个寄存器 代码如图所示关于z 的赋值:...

2022-05-17 11:49:11 201

原创 HDL Dff16e

1.原题复现2.第一次错误代码1.2.得出的时序图经过:Synchronous active-low reset 的分析。发现这是一个同步的时序,而自己错把复位当作是异步复位,因此,导致在时序变化上,自己输出的值与参考值有突出。正确做法是去掉图片中的异步复位。...

2022-05-17 09:20:42 141

原创 HDL Alwaysblock2(关于组合与时序 阻塞与非阻塞 HDL中给出的解释说明)

1.原题复现可总结如下:1.always@(*)代表是组合逻辑2.always@(posedge clk)代表的是时序逻辑3.assign 只能用于非always块内4.在一个组合逻辑always块中,使用阻塞语句5.在一个时序逻辑always块中,使用非阻塞语句...

2022-05-16 21:01:35 196

原创 HDL Exams/ece241 2013 q2

部分参考内容来自于:https://blog.csdn.net/weixin_44884357/article/details/1068071781.原题复现题目中的SOP代表的意思:sum of production 积之和 POS 和之积2.解题3.知识点学习关于积之和 与和之积的表达形式怎么求解:1.积之和:积之和的求法:可以根据卡诺图,按照2个,4个,8个等形式的最小项之和来进行化简,同时可以配合任意项的合理使用。2.和之积:和之积的求法:和之积的求法一般要求利用摩根定理

2022-05-14 10:46:52 483

原创 HDL Bcdadd4 (包括对generate endgenerate语法的复习)

1原题复现2解题通过学习他人的博客之后,了解到本题的考察点是关于generate endgenerate 用来例化模块的语法知识点:重新复习一下generate的循环语法:1.在使用generate循环语法时候,必须现在genvar中声明循环中所使用到的索引变量名,然后才能使用generate块。 因为genvar声明的索引变量被利用作为整数在generate中来判断循环 一般将genvar声明放在generate过程块的外部区域,并且相同的循环索引变量可以在多个generate中使用。代码

2022-05-13 12:05:13 247

原创 HDL Exams/ece241 2014 q1c

1.原题复现2.解题题目是要求是下:有两个二进制补码的向量的情况下,判断出他们在相加减情况下的溢出情况。什么情况下才会溢出呢? 正数+正数=负数(正数-负数相当于正数+正数) 负数加负数=正数(负数-正数相当于负数加负数) (减法是可以转化为加法的) 所以判断方法可以为...

2022-05-13 10:54:38 66

原创 HDL刷题 Exams/m2014 q4j

1.原题补充:Ripple carry adder :行波进位加法器 又称为逐位进位加法器2.解答方法1:当时拿着这道题,就想到的是利用 直接相加的方法来做本质上是因为verilog中,如果 x+y产生了进位,那么verilog的语法会自动将x+y扩展成5位数。方法2:利用生成块方法:需要注意的地方:生成块里面的generate endgenerate中的begin end 必须要使用一个名称来称呼在网上看到的其他方法:1.采用实例化模块的方式进行的: module top_

2022-05-13 10:41:33 284

原创 tinyriscv的学习(1)

1.标准DFF模块的编写2.assign语法替代if-else和case语法、以上两条参见手把手教你设计CPU的p70页。3.用always描述组合逻辑电路时要注意避免产生锁存器,if和case的分支情况要写全。4.在tinyriscv中用了大量的always来描述组合逻辑电路,特别是在译码和执行阶段。5.寄存器采用的是异步读方式PC寄存器模块:1.采用的是上升沿时钟方式,是什么意思?好像引用的变量都不在本文件内,类似于宏定义。`include “defines.v”2.tinyriscv

2022-02-20 23:31:43 2283

原创 计算机体系结构学习零碎记录

1.延迟槽指令2.指令相关: 数据相关,控制相关,结构相关。3.序关系4.数据相关:3种相关:写后读相关RAW,也成为真相关。写后写相关WAW,也成为输出相关,即两条指令写同一个单元,乱序执行中,如果后一条指令先写,前面的指令后写,就会产生错误的结果。。 读后写相关,在乱序执行的结构或者读写指令流水及不一样时候,即读指令读到该单元未来的值,从而引起的错误。5.阻塞(stall),5级静态流水线如何实现阻塞过程呢?:具体实现:将ID流水级指令的两个源寄存器号与EX.MEM,WB阶段的dest做比较,如

2022-02-20 23:04:10 2781

原创 Ubuntu20.04安装Vivado19.2出现安装过程和Win10下安装ISE14.7的安装过程以及NotePad++在Vivado19.2和ISE14.7下的配置

Ubuntu20.04安装Vivado19.2出现安装过程和Win10下安装ISE14.7的安装过程以及NotePad++在Vivado19.2和ISE14.7下的配置提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Ubuntu20.04安装Vivado19.2出现安装过程和Win10下安装ISE14.7的安装过程以及NotePad++在Vivado1

2022-01-20 15:18:53 2789

原创 STA静态时序分析总结与归纳

文章目录什么是静态时序分析?相关参数1.建立时间和保持时间的分析2.发射沿和锁存沿3.数据到达时间(数据路径)4.时间到达时间(时间路径)5.时钟偏斜6.数据需求时间7.建立裕量8.保持裕量总结什么是静态时序分析?首先,静态时序分析分析是基于同步电路设计模型的。静态时序分析STA对于同步时序电路必不可少,通过静态时序分析,一方面可以增加系统稳定性减少亚稳态的发生,另一方面可以最大限度的提升系统工作频率。因此,对静态时序相关概念的理解,以及掌握静态时序分析的方法具有重要意义:相关参数1.建立时间和

2021-07-29 23:52:42 4241 3

转载 GPIO和open-drain, push-pull,MOSFET, MOS管,三极管等基础知识

【open-drain与push-pull】GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。对此两种模式,有何区别和联系,下面整理了一些资料...

2018-08-17 21:03:10 6894

转载 IIC详解,包括原理、过程,最后一步步教你实现IIC

IIC详解1、I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL  2、IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备)。上图中主设备是两个单片机,剩下的都是从设备。 3、多主机会产...

2018-08-16 23:02:54 1508 1

转载 RS232 RS485 串口 电平标准

RS-232个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个...

2018-08-13 09:37:03 7775

转载 区分:串口,COM口,UART,USART,RS232等等

    本文主要简述串口,COM口,UART,USART之间的联系和区别,另外也讲述了串口的RS-232电平和TTL电平,以及单片机与电脑之间的串口连接方式。串口      串口,即串行接口,与之相...

2018-08-12 22:36:58 3648

转载 SPI、I2C、UART三种串行总线的原理、区别及应用

SPI、I2C、串口、我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比较多,下面找到了一篇博客。转过来、1、UART就是两线,一根发送...

2018-08-12 22:31:35 1069

转载 串口 COM口 USB-TTL RS-232 RS-485 不同标准 区别 释疑

最近在做MOXA的协议转换工作,对串口、COM口和相关通信协议并不清楚,搜了一圈,这篇文章介绍非常翔实到位,很是受益,特转载保存。原文地址:http://blog.sina.com.cn/s/blog_6566538d0100r7p8.html有几个概念玩嵌入式的娃娃们经常搞混。也...

2018-08-12 21:51:14 496

转载 ARM内核和架构都是什么意思,它们到底是什么关系?

ARM产品越来越丰富,命名也越来越多。: ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么?1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为高速度设计的Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4...

2018-08-12 20:49:39 9467 1

转载 区分:串口,COM口,UART,USART

    本文主要简述串口,COM口,UART,USART之间的联系和区别,另外也讲述了串口的RS-232电平和TTL电平,以及单片机与电脑之间的串口连接方式。串口      串口,即串行接口,与之相...

2018-08-05 22:59:13 1918 1

转载 串口、COM口、UART口, TTL、RS-232、RS-485区别详解

1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突。3、PL2303、CP2102芯片是USB 转 TTL串口 的芯片,用USB来扩展...

2018-08-05 22:57:28 4738 1

转载 关于#ifndef#define#endif的认识

<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css"> <div clas

2018-08-05 22:39:26 101

空空如也

空空如也

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

TA关注的人

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