Verilog
文章平均质量分 82
love小酒窝
东大电子本硕,菜鸡一枚
展开
-
Quartus 调试笔记
Quartus 调试笔记@(verilog)最近忙于芯片跟测试FPGA联调,解锁了不少quartus的用法,在此记录一下备忘。文章目录Quartus 调试笔记一. modelsim 联仿1. tb文件创建2. modelsim联仿环境二. modelsim - quartus 动态调试仿真三. quartus-modelsim仿真ROM注意事项四. SignalTap 使用一. modelsim 联仿1. tb文件创建Processing — Start — Start testbenc原创 2020-08-31 16:16:44 · 2448 阅读 · 0 评论 -
Verilog -- 序列发生器的设计
Verilog – 序列发生器的设计@(verilog)文章目录Verilog -- 序列发生器的设计1. 题目2. 思路1 - 状态机实现3. 思路2 - 移位寄存器实现4. 思路3 -- 计数器+组合逻辑1. 题目产生序列信号11010111至少需要几级触发器?2. 思路1 - 状态机实现最容易想到的就是采用状态机,每个状态输出序列中的一位,发送完一组序列后回到开始状态继续循环。需要注意的是状态变量的位宽,由于题目要求采用最少的触发器,因此至少需要log2(序列长度)log_2(序列长度原创 2020-06-21 12:59:10 · 6052 阅读 · 0 评论 -
VIM插件 -- 自动生成verilog module的testbench
VIM插件 – 自动生成verilog module的testbench@(VIM)文章目录VIM插件 -- 自动生成verilog module的testbench1. 动机2. 代码3. 使用方法4. 效果5. 说明1. 动机软件语言都有各自好用的IDE,各种自动补全,高亮,语法检查。而苦逼的ICer大多还操着远古时期的VIM写着verilog。也是,硬件语言本身就小众,即使是xilinx, altera等大厂的vivado, quartus等大牌软件,自带的代码编辑器也不是很友好。好在号称编辑原创 2020-06-19 00:27:03 · 2212 阅读 · 6 评论 -
Verilog -- 并行2bit输入序列检测器
Verilog – 并行2bit输入序列检测器@(verilog)乐鑫2020笔试题:描述:模块输入口是并行的2bit,实现对(1011001)2(1011001)_2(1011001)2的序列检测,输入数据顺序为高位2bit先输入,当检测到序列时输出一拍高电平脉冲,用verilg描述。方法一:状态机采用状态机描述,先列出状态转移表,跟单bit输入不同的是,这里的输入是并行的2bit:state\input0001101100110110101原创 2020-06-02 11:40:15 · 2178 阅读 · 0 评论 -
Verilog -- 任意整数除以三求商和余数
Verilog – 任意整数除以三求商和余数@(verilog)文章目录Verilog -- 任意整数除以三求商和余数1. 问题简介2. 思路3. 代码1. 问题简介问题:输入一个16bit的数,现在要求它除以3得到的商和余数,如何优化?来源:@笑着刻印在那一张泛黄 提供,面试真题。2. 思路一开始联想到之前写过的另一篇博文序列模三检测器,但是这只能解决余数的问题,没法得到商。后面的想法是直接使用任意整数除法器来实现,由于除数是3,比较特殊,实际上除3只需要考虑三个序列,也就是11,10原创 2020-05-19 20:46:52 · 7674 阅读 · 0 评论 -
Verilog -- 改进的Booth乘法(基4)
Verilog – 改进的Booth乘法(基4)@(verilog)文章目录Verilog -- 改进的Booth乘法(基4)1. 背景2. 原理3. 算法实现4. Verilog 代码1. 背景之前已经介绍过Booth乘法算法的基本原理以及代码,实际上之前的算法是基2的booth算法,每次对乘数编码都只考虑两位。因此在实际实现时往往效率不高,考虑最坏情况,使用基2的booth算法计算两个8位数据的乘法,除了编码复杂,计算时需要累加8个部分积,可见最坏情况跟普通阵列乘法器需要累加的部分积个数一样,因原创 2020-05-14 17:32:29 · 8015 阅读 · 8 评论 -
Verilog -- 求两数最大公因数(gcd)和最小公倍数(lcm)
Verilog – 求两数最大公因数和最小公倍数@(verilog)文章目录Verilog -- 求两数最大公因数和最小公倍数1. 原理简介1.1 辗转相除法求公因数1.2 最小公倍数求法2. 代码实现1. 原理简介1.1 辗转相除法求公因数求最大公因数的常用算法为辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。两个数的最大公约数是指能同时整除它们原创 2020-05-11 10:02:41 · 3028 阅读 · 3 评论 -
Verilog -- 乘法器Booth算法
乘法器 – Booth算法@(知识点汇总)文章目录乘法器 -- Booth算法1. 原理2. 一般化推论3. 实际算法1. 原理Booth算法的原理其实小学初中就学过,比如下面这道题:简便计算:8754×998=?8754 \times 998 = ?8754×998=?随便抓个娃娃来都知道应该这么算:8754×998=8754×1000−8754×28754 \times 998 ...原创 2020-05-07 13:12:53 · 7095 阅读 · 10 评论 -
Verilog -- 无符号整数除法器(二)
Verilog – 任意整数除法器(二)文章目录Verilog -- 任意整数除法器(二)在 Verilog – 任意整数除法器(一)中已经给出了一种除法器的组合逻辑实现,但是实际使用中可能还是需要讲组合逻辑插拍才能得到更好的性能。下面给出一种基于状态机的时序逻辑除法器实现。这边先上一下算法流程图,跟之前的一样:是否是否32位整数a除以ba的高位扩展32位b的低位扩展32位a左移一位a>=b?a = a-b+1移位次数<32输出a下面是verilog代码:`timescale 1n原创 2020-05-10 20:51:14 · 2662 阅读 · 1 评论 -
Verilog -- 序列检测器(采用移位寄存器实现)
转自:https://www.cnblogs.com/qiweiwang/archive/2011/04/18/2019952.htmlVerilog --序列检测器(采用移位寄存器实现)序列检测器就是将一个指定序列从数字码流中识别出来。本例中将设计一个“10010”序列的检测器。设X为数字码流的输入,Z为检测出标记输出,高电平表示发现指定的序列10010.考虑码流为11001001000...转载 2020-04-29 10:39:51 · 5932 阅读 · 1 评论 -
Verilog -- 序列模三(整除3)检测器
Verilog – 序列模三(整除3)检测器描述:输入口是1bit,每次进来一位数据,检查当前序列是否能整除3,能则输出1,否则输出0.例如:序列=1,out=0;序列=11,out=1;序列=110,out=1;序列=1101,out=0;首先需要找一下规律,一个数被三除,只可能会有三种情况:1.余数为0;2.余数为1;3.余数为2;假设当前序列表示的数是x,商为a,余数为...原创 2020-04-24 16:31:14 · 5947 阅读 · 0 评论 -
Verilog -- 阻塞与非阻塞的仿真与综合
Verilog – 阻塞与非阻塞的仿真与综合文章目录Verilog -- 阻塞与非阻塞的仿真与综合基本概念Verilog层积事件列(stratified event queue)示例:自触发的always块阻塞和非阻塞的综合问题非阻塞赋值和$display0延时建议参考 Clifford E. Cummings, Sunburst Design, Inc. “Nonblocking Assi...原创 2020-04-14 23:43:48 · 1329 阅读 · 0 评论 -
Verilog -- IIC总线协议
Verilog – IIC总线协议文章目录Verilog -- IIC总线协议简介读写时序写时序读时序verilog代码设计IIC发送模块的接口定义与整体设计SCL标志位创建逻辑发送逻辑读逻辑IIC设备多字节连续读写操作参考自 https://www.cnblogs.com/liujinggang/p/9656358.html上面的博文写的很好,下面只是摘录一些重要知识点以及自己的理解。...转载 2020-04-04 11:59:08 · 1240 阅读 · 0 评论 -
Verilog -- SPI协议
Verilog – SPI协议简介SPI是一种全双工通信,并且是一种同步传输方式(slave的接收clk需要master给出)SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务。正是因为这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。S...原创 2020-04-03 22:28:38 · 1248 阅读 · 1 评论 -
Verilog -- 无glitch时钟切换电路
Verilog – 无glitch时钟切换电路https://blog.csdn.net/bleauchat/article/details/96180815题目:用Verilog实现glitch free时钟切换电路。输入sel,clka,clkb,sel为1输出clka,sel为0输出clkb第一种纯组合逻辑 module clk_select1(input ...原创 2020-04-03 16:34:02 · 1009 阅读 · 0 评论 -
Verilog -- 奇数分频器
Verilog – 奇数分频器偶数分频的原理就是计数到N/2-1后对分频输出取反。而如果分频数N为基数,则需要:clk_out1 在clk 上升沿计数到 (N-1)/2-1后取反, 计数到N-1以后再取反clk_out2 在clk 下降沿计数到 (N-1)/2-1后取反, 计数到N-1以后再取反clk_out 取clk_out1 和 clk_out2的或。代码:module clk_d...原创 2020-04-03 14:15:24 · 941 阅读 · 3 评论 -
Verilog -- initial块中阻塞与非阻塞赋值问题
Verilog initial块中阻塞与非阻塞赋值问题问题描述在testbench的编写中经常要做的就是在initial块中对一些信号变化进行描述。比如希望信号start在仿真开始后第10个周期上升沿置为高电平。对于仿真时钟一般都会这么写: always #1 clk = ~clk;如果初始化clk = 0,那么实际上start应该在 #21;start=1; 也就是十个半周期后置...原创 2020-04-02 16:54:24 · 5508 阅读 · 0 评论 -
跨时钟域处理--最终详尽版
跨时钟域处理–最终详尽版文章目录跨时钟域处理--最终详尽版1. 异步时序定义2. 亚稳态3. 单比特同步策略方法一:双锁存器注意问题1注意问题2注意问题34.多比特同步策略控制信号多比特同步同步变化的控制信号控制信号多比特之间有一定时钟相位差数据多比特同步方法一:脉冲同步法(开环的结绳法)方法二:闭环结绳法方法三:异步双口RAM+格雷码(异步FIFO)格雷码简介异步FIFO方法四:二深度FIFO......原创 2020-03-27 23:30:40 · 8659 阅读 · 6 评论 -
Verilog -- 序列检测器及其最小状态数
Verilog – 序列检测器笔试题:序列检测器检测11011001序列,最少需要几个状态?Mearly 型:State\Input01IDLE0\01\000\01\010\011\011110\011\01100\01101\011010\011011\011011110110\011\011...原创 2020-03-27 14:48:33 · 1852 阅读 · 2 评论 -
Verilog -- 状态机
Verilog – 状态机文章目录Verilog -- 状态机MOORE 与 MEALEY 状态机的特征?一段式状态机二段式状态机三段式状态机参考:https://blog.csdn.net/woshiyuzhoushizhe/article/details/95866063https://blog.csdn.net/qq_34070723/article/details/1007372...原创 2020-03-27 13:51:00 · 430 阅读 · 0 评论 -
Verilog -- 有符号与无符号的加法和乘法运算
目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考:https://blog.csdn.net/vivid117/article/details/1014...原创 2020-03-20 19:31:00 · 13074 阅读 · 0 评论 -
Verilog -- 无符号整数除法器(一)
参考: https://blog.csdn.net/rill_zhen/article/details/7961937https://www.cnblogs.com/moranhuishou0315/p/11344725.htmlVerilog -- 任意整数除法器在不使用除法的前提下,如何设计一个快速高效的除法器?在Verilog HDL语言中虽然有除的运算指令,但是除运算...原创 2020-03-18 11:48:00 · 3376 阅读 · 1 评论 -
FIFO -- 深度计算
FIFO深度的计算公式参考 https://www.cnblogs.com/dxs959229640/p/8144656.html求FIFO的最小深度主要有以下要点:在求解之前需要验证一下在允许的最大时间长度内写入的数据量是否等于读出的数据量,保证有解;求FIFO深度需要考虑最坏的情形,读写的速率应该相差最大,也就是说需要找出最大的写速率和最小的读速率;不管什么场景,要确...原创 2020-03-16 22:12:00 · 556 阅读 · 0 评论 -
单口 RAM、伪双口 RAM、真双口 RAM、单口 ROM、双口 ROM 的区别
转自:https://www.cnblogs.com/PG13/p/11592797.html单口 RAM 与伪双口 RAM、真双口 RAM 的区别在于: + 单口 RAM 只有一个时钟(clka)(时钟上升沿到来时对数据进行写入或者读出)、一组输入输出数据线(dina & douta)、一组地址线(addra)、一个使能端(ena)(“ena == 1”时可进行读或写的操...原创 2020-03-06 14:34:00 · 3667 阅读 · 0 评论 -
异步FIFO的verilog代码实现(包含将满和将空逻辑)
目录 异步FIFO的verilog代码实现(包含将满和将空逻辑) 异步FIFO简介 异步FIFO关键技术1 -- 读写信号跨时钟域同步 异步FIFO关键技术2 -- 读写地址的比较 异步FIFO关键技术3 -- 将满和将空的产生 FIFO逻辑图 ...原创 2020-03-07 23:20:00 · 5736 阅读 · 3 评论 -
跨时钟域处理方法总结
目录 跨时钟域处理 1. 异步时序定义 2. 亚稳态 3. 同步策略 方法一:双锁存器 方法二:握手信号(结绳法) 方法三:异步双口RAM+格雷码 跨时钟域处理为了彻底理...原创 2020-03-08 10:54:00 · 8651 阅读 · 2 评论 -
面向综合优化的Verilog代码风格
用于记录学习数字前后端中总结得到的对verilog代码编写的注意事项良好的运算顺序a <= bd + cd + eb;尽量不要写这种运算表达式,最好经过化简:a <= b(d + e) + c*d...原创 2020-03-05 22:08:00 · 407 阅读 · 0 评论