
verilog学习
文章平均质量分 54
Verilog常见代码和语法学习
借问众神明.
犹当晚学,不可自弃
展开
-
【verilog---- if else 与多if 代码综合电路区别】
if else 形式写的代码会被EDA软件综合为多路选择器,无优先级顺序。多if写的代码会综合成带优先级的电路,如下图所示,最后一级为最高优先级。原创 2022-11-21 15:56:23 · 1887 阅读 · 0 评论 -
【手撕代码-序列检测1011001-每次输入2bit】
请实现对(1011001)2的序列检测功能,模块每拍并行输入2bit,且顺序为高位先输入,当检测到序列,输出一拍高电平脉冲。序列检测题的关键是画出状态图状态图:原创 2022-06-23 19:52:56 · 417 阅读 · 0 评论 -
跨时钟域刷题
跨时钟域的信号分为两类,一类是单比特的信号,一类是多比特的信号。对于单比特信号,可以分为两种情况:对于多比特信号:一般采用异步FIFO、异步双口RAM、握手、格雷码方式处理。该题为笔试遇到的遇到真题,该题主要考察了多比特信号的处理,且为慢时钟域到快时钟域。思路:将计数结果换成格雷码,并在快时钟域下打两拍处理。2.仿真结果如下:当计数步进为2时,格雷码每次变化的数不为1,不满足单比特变化,在跨时钟域时容易出问题,使得采样有误。思路:将脉冲信号进行展宽,然后同步到慢时钟域,再将反馈回快时钟域的信号原创 2022-06-18 15:44:45 · 459 阅读 · 0 评论 -
异步复位同步释放的理解
在同步复位中,复位信息的传递由时钟信号控制,仅当时钟上升沿到来时才会将复位信息和数据d存入寄存器中。电路图如下:同步复位优缺点:代码实现异步复位与同步复位相对应的异步复位则不受时钟的控制,由下图看出,异步复位多了一个rst复位线,于是电路可以随时进行复位。不受限于时钟上升沿的到来。异步复位优缺点:代码实现:异步复位,同步释放异步复位同步释放其实相当于将信号打两拍,避免异步复位释放引起的亚稳态。即使Q1输出信号为亚稳态,但是从触发器此时的数据输入接收的还是主触发器输出的Q1稳态的复位状态0。所原创 2022-06-10 11:15:35 · 450 阅读 · 0 评论 -
边沿检测—Verilog
在设计中,需要检测某一信号发生0->1跳转的变化时,可以采用边沿检测。边沿检测的实现思路如下图所示,为了保证采样信号沿的准确,首先对信号进行打拍处理。由波形图可以看出,上升沿出现时,可以由d1与d2非的与检测得到,同理可得下降沿和双沿检测。实现代码如下:...原创 2022-06-10 10:02:33 · 3429 阅读 · 0 评论 -
24位数据转128位
实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时钟信号;rst_n是异步复位信号。此题关键在于将24位数据凑成128Bit因为1283 = 2416直接给出代码:module width_24to128( input clk , input rst_n , input v原创 2022-05-02 17:47:03 · 515 阅读 · 0 评论 -
数据累加输出---verilog
文章目录介绍思路分析代码实现介绍本题目来源为牛客网中在线编程>verilog模块,要求实现串行输入数据累加输出,输入端输入8bit数据,每当模块接收到4个输入数据后,输出端输出4个接收到数据的累加结果。输入端和输出端与上下游的交互采用valid-ready双向握手机制。要求上下游均能满速传输时,数据传输无气泡,不能由于本模块的设计原因产生额外的性能损失。电路的接口如下图所示。valid_a用来指示数据输入data_in的有效性,valid_b用来指示数据输出data_out的有效性;ready_原创 2022-05-02 15:41:16 · 6030 阅读 · 1 评论 -
不同形状信号产生电路
本题取自牛客网题库题目描述:请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice=0时,发出方波信号;wave_choice=1时,发出锯齿波信号;wave_choice=2时,发出三角波信号。解析:要想实现方波,可以看到,方波类似于时钟信号,在本题中,我通过设计四分频电路的思路设计方波的产生,给波的峰值设置为10。实现锯齿波:将wave的值在每个时钟上升沿加一,当加到峰值10时,将其清零,随后继续重复此步骤。三角波形:对于三角波的产生,类似于原创 2022-03-19 19:04:04 · 189 阅读 · 0 评论 -
同步fifo设计
文章目录FIFO介绍:判断空满代码仿真波形FIFO介绍:FIFO表示先进先出的意思。是基于RAM的存储模块,一般多是用于缓冲数据。以代码中声明端口为例,对于一个FIFO来讲,通常具有时钟信号clk,复位信号rst,读写命令, 数据写入和数据读出。当写信号write_to_fifo拉高时且此时fifo未写满,fifo应该继续写入数据 data_in,当读信号read_from_fifo拉高且此时fifo不为空时,从fifo中读出数据data_out,write_to_fifo必须拉高数据才能写入,一旦原创 2022-03-18 20:52:30 · 481 阅读 · 0 评论 -
【不重叠序列检测-状态机方法实现】
文章目录题目描述解题思路:状态转移图dut和tb代码:波形图题目描述编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数据不符合,则不考虑后五位。一直到第七位数据即下一组信号的第一位开始检测。当信号满足该序列,给出指示信号match。当不满足时给出指示信号not_match。上题出自牛客网中,本文简化了题目,即改为检测序列为0110解题思路:不同于常见的序列检测,要求检测重复序列,在画状态转移图时要注意,例如第一位不匹配,不应该返原创 2022-03-15 00:47:43 · 753 阅读 · 0 评论 -
奇数分频电路—5分频(verilog实现)
文章目录前言占空比不为50%的奇数分频占空比为50%的5分频电路扩展前言前文我们讲到,可以通过计数器的方法实现偶数分频,实现方式可以参考4分频电路实现那么对于奇数分频电路应该如何实现呢?是否也可以通过计数器实现呢?答案是肯定的。这里我们仍然采用计数器的方法实现奇数分频。占空比不为50%的奇数分频对于占空比不为50%的电路来说比较简单,这里我们以5分频电路为例。用计数器计数到1时翻转时钟信号,在计数到4时再翻转时钟。这样即可实现5分频电路,且占空比为60%,这里给出实现代码如下:`timescal原创 2022-03-06 15:46:29 · 7813 阅读 · 0 评论 -
verilog实现序列检测(状态机和移位寄存器实现)
用Verilog描述一个可综合的序列检测器用于检测输入数据码流中的特定序列。本文介绍了使用状态机来直接描述和采用移位寄存器的方式进行检测的两种方法。同时,也给出了tb文件和仿真波形图。原创 2022-02-26 13:58:34 · 2738 阅读 · 0 评论 -
【4分频电路 -verilog】
分频器介绍分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。4分频代码如时钟频率为50MHz,而实际需要(50/6 MHz)的频率,因此就需要4分频电路处理。4分频电路代码设计如下:`timescale 1ns/1nsmodule tb; reg clk, rst; wire clk_out; di原创 2022-02-20 23:19:01 · 10019 阅读 · 0 评论 -
【verilog-10位计数器, vcs仿真和问题记录】
前言此文介绍了十位计数器的verilog代码编写以及使用vcs的仿真流程。10位计数器具体代码如下`timescale 1ns/1psmodule tb(); reg clk; reg rstn; wire [3:0]cnt;counter dut(.clk(clk), .rst(rstn), .cnt(cnt) ); initial begin clk <= 0; fore原创 2022-02-18 13:32:45 · 1753 阅读 · 0 评论