Verilog
文章平均质量分 68
Verilog
朽木白露
只有最不虔诚的信徒,才会追寻上帝存在的证明
展开
-
Verilog二维数组一维数组相互转换
转自:https://blog.csdn.net/qq_35861248/article/details/112990098Verilog二维数组端口使用方法Verilog不支持二维数组端口定义,限制了模块可扩展性。通过generate将二维数组打包为一维数组输出,或将一维数组展开为二维数组即可方便地进行管理将下列宏函数写入头文件并包含在设计中,直接调用宏函数进行打包\展开即可。//二维数组打包为一维数组`define PACK_ARRAY(PK_WIDTH,PK_LEN,PK_SRC,PK_D转载 2022-02-21 17:30:53 · 3401 阅读 · 0 评论 -
verilog中,数组越界赋值了会怎么样?
reg[15:0] value[7:0];如果在赋值的时候, 使用 value[8] = data;value[15] = data;这样的越界的赋值,会有什么样的后果?来测试一下:`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/11/原创 2021-11-15 14:04:25 · 1192 阅读 · 0 评论 -
Verilog 编译指令简介
转自: http://blog.itpub.net/31559985/viewspace-2731447/下面介绍下完整的 8 种编译指令,其中前 4 种使用频率较高。`define, `undef在编译阶段,`define 用于文本替换,类似于 C 语言中的 #define。一旦 `define 指令被编译,其在整个编译过程中都会有效。例如,在一个文件中定义:`define DATA_DW &nbs转载 2021-11-11 21:55:53 · 1681 阅读 · 0 评论 -
PLL中的locked信号解析
转自:http://www.360doc.com/content/13/0509/20/9072830_284220258.shtml 今天对PLL中areset和locked详细查了下资料,发现网上这方面的资料很少,所以自己认真读了下Documentation---ug_altpll.pdf,现在我将我学到的内容总结如下: areset简而言之就是高电平有效,对pll进行复位。 下面我们主要来认识一下locked信号: Locked这个输出到底是干嘛用的呢,pdf转载 2021-09-23 13:13:44 · 5047 阅读 · 0 评论 -
FPGA时序约束理论篇之时序路径与时序模型
转自:https://www.sohu.com/a/364537819_292853时序路径 典型的时序路径有4类,如下图所示,这4类路径可分为片间路径(标记①和标记③)和片内路径(标记②和标记④)。 对于所有的时序路径,我们都要明确其起点和终点,这4类时序路径的起点和终点分别如下表。 时序路径 起点 终点 应用约束 ①输入端口到FPGA内部第一级触发器的路径 ChipA/clk rega/D转载 2021-09-17 13:37:08 · 587 阅读 · 0 评论 -
建立时间和保持时间
一、概念在实际电路中,必须考虑传输延迟的影响。比如D锁存器,在时钟信号从1变成0时,它把当前输出的值储存在锁存器中。如果输入D稳定,则电路可以稳定工作,如果在时钟跳变时候D的内容也正好发生变化,则可能产生不可预知的结果。所以电路设计者必须保证时钟信号跳变时后,输入信号是稳定的。下图中标示了一些关键时间区间,这些区间和工艺有关。集成电路制造厂家都会提供这个参数。建立时间(Tsu:set up time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升原创 2021-09-16 20:37:19 · 651 阅读 · 0 评论 -
彻底搞懂状态机(一段式、两段式、三段式)
转自:https://blog.csdn.net/wordwarwordwar/article/details/78509445 实例:FSM实现10010串的检测 状态转移图:初始状态S0,a = 0,z = 0.如果检测到1,跳转到S1。 下一状态S1,a = 1,z = 0.如果检测到0,跳转到S2。 下一状态S2,a = 0,z = 0.如果检测到0,跳转到S3。 下一状态S3,a = 0,z转载 2021-09-03 15:12:11 · 6826 阅读 · 1 评论 -
vivado VIO (virtual input output)虚拟IO的使用
转自:https://blog.csdn.net/wordwarwordwar/article/details/77150930 一般情况下ILA和VIO都是用在chipscope上使用,VIO可以作为在chipscope时模拟IO。 譬如: 在使用chipscope时需要使用按键出发,但是没有设计按键或者板子不再身边,所以需要模拟按键输入还有其他信号的输出。 参数配置,配置输入探针数量和输出探针数量。分别可以设置0-2转载 2021-08-31 16:12:17 · 7026 阅读 · 1 评论 -
xilinx FPGA IOB约束使用以及注意事项
转自:https://blog.csdn.net/a874176979/article/details/108484101 xilinx FPGA IOB约束使用以及注意事项 一、什么是IOB约束 在xilinx FPGA中,IOB是位于IO附近的寄存器,是FPGA上距离IO最近的寄存器,同时位置固定。当你输入或者输出采用了IOB约束,那么就可以保证从IO到达寄存器或者从寄存器到达IO之间的走线延迟最短,同时由于IO的位置是固定的,即存在于IO附近,所以每一次编译都不会造成输入或者输出的时序发生改变。转载 2021-08-31 12:16:32 · 2176 阅读 · 0 评论 -
Verilog中Case语句
转自:https://blog.csdn.net/CLL_caicai/article/details/104395480 实际问题中常常需要用到多分支选择,使用if语句导致内容繁琐;更明智的做法是使用case语句,case语句是一种多分支选择语句,可以方便的处理多分支选择。本文通过实际例子,讲解case语句的使用,以及case语句的变体casez和casex的使用: 目录 一、case的用法 形式: 功能: 注意: 测试: 二、casez与casex的用法 三、参考文献 一、转载 2021-08-30 20:20:25 · 25318 阅读 · 1 评论 -
异步FIFO的设计与实现
原文地址: https://www.cnblogs.com/BitArt/archive/2013/04/10/3010073.htmlFIFO简介FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。用途1:异步FIFO读写分别采用相互异步的不同时钟。在现转载 2021-08-15 11:55:04 · 345 阅读 · 0 评论 -
用Verilog实现寻找第一个1和最后一个1的位置
用Verilog实现寻找数据 第一个1和最后一个1的位置 寻找数据中的第一个1的位置// find fist onemodule find_ones(input [7:0] x,output [2:0] y);wire [3:0] data_4;wire [1:0] data_2;assign y[2] = | x[7:4];assign data_4= y[2] ? x[7:4] : x[3:0] ;assign y[1] = | data_4[3:2];assign dat..转载 2021-08-14 12:37:30 · 4724 阅读 · 1 评论 -
verilog全加器、全减器和乘法器及溢出判断
全加器转自:https://www.cnblogs.com/SYoong/p/5917296.html先以一位全加器为例:Xi、Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号。列表有: Xi Yi CinSumCout000000011001010011011001010101110转载 2021-08-03 22:28:56 · 5091 阅读 · 0 评论 -
Verilog:generate-for 语句(用法,及与for语句区别)
转自:https://blog.csdn.net/weixin_44544687/article/details/107793235 文章目录 Abtract1、generate语法2、generate常用的几种情况举例说明1). generate-for循环语句2).generate-conditional条件语句3).generate-case分支语句 3、Conclusion4、generate-for 与 常规for 循环不同1)使用举例2)结论 参考链接:https://www.c转载 2021-08-01 14:33:26 · 5827 阅读 · 1 评论 -
Verilog中的多维数组和存储器
转自:https://reborn.blog.csdn.net/article/details/106974813博文目录 写在前面正文多维数组多维数组赋值内存寄存器变量应用实例寄存器阵列应用实例 参考资料交个朋友 写在前面 上篇博客讲了单比特的变量称为标量,多比特的变量称为向量。其实向量就类似于C或者其他语言中的一维数组,如果是reg类型的变量,对应的硬件逻辑是寄存器。 本篇博文进一步延伸,Verilog中也存在多维数组,它对应的硬件逻辑可以是存储器,诸如RAM,ROM,以及FI转载 2021-08-01 14:25:03 · 2746 阅读 · 0 评论 -
Verilog中参数传递与参数定义
1、符号常的定义用parameter来定义一个标志符代表一个常量,称作符号常量,他可以提高程序的可读性和可维护性。parameter是参数型数据的关键字,在每一个赋值语句的右边都必须是一个常数表达式。即该表达式只能包含数字或先前已经定义的参数。parameter msb=7; //定义参数msb=7parameter r=5.7; //定义r为一个实型参数5.7parameter byte_size=8,b转载 2021-07-31 12:48:56 · 3309 阅读 · 0 评论 -
Verilog的generate的用法
转自:https://blog.csdn.net/sinat_25326461/article/details/52384968生成语句可以动态的生成verilog代码,当对矢量中的多个位进行 重复操作 时,或者当进行多个模块的实例引用的重复操作时,或者根据参数的定义来确定程序中是否应该包含某段Verilog代码的时候,使用生成语句能大大简化程序的编写过程。生成语句生成的实例范围,关键字generate-endgenerate用来指定该范围。生成实例可以是以下的一个或多个类型:(1)模块;(2)用户定转载 2021-06-17 11:43:40 · 642 阅读 · 0 评论 -
Verilog always敏感电平说明
always@(a)a信号发生变化是触发always@(posedge a or negedge a)a信号双边沿触发always不断触发,伪组合逻辑电路always@(*)任意输出信号发生变化触发always@(a or posedge clk)clk上升沿或a发生变化触发always@(data[2:0])data是8位数据,前三位data[2:0]发生变化触发...原创 2019-12-03 15:24:43 · 6244 阅读 · 1 评论 -
Verilog 7人投票表决器
7人投票表决,当票数大于等于4(即半数以上),输出1表示通过,否则输出0表示未通过。方法一:module vote_7(input clk,input[6:0] in,output out ); wire[2:0] vote_count; assign vote_count = in[0] + in[1] + in[2] + in[3] + in[4] + in[...原创 2019-12-03 14:44:42 · 20548 阅读 · 3 评论 -
三种方法用Verilog实现多人表决器
module biaojue(a,b,c,d,e,f);input a,b,c,d,e;output f;reg f;reg[2:0] count1;initial count1=0;always@(a,b,c,d,e)begincount1=a+b+c+d+e;f=count1<3?0:1;//当人数在三人以下是输出1endendmodulemodule bi...转载 2019-11-30 11:44:13 · 14174 阅读 · 0 评论