文章分类 - verilog
摘要:一般认为“ ”在Verilog里是算术右移指令,但实操中发现它有时会在右移时仍然补零,即使符号位为1。 这是因为“ ”会先判断这个操作数是否有符号数。 如果是无符号数,则补零,是有符号数,才会补符号位。 而一般使用的reg operand; 这种变量定义法默认所定义的变量为无符号数,因此只补零。 解
阅读全文
摘要:下面是一种典型的inout端口使用方法: 当inout端口作为输入口使用时,一定要把它置为高阻态,让例子中的io_link=0即可; 当inout端口作为输出口使用时,则将实例中的io_link=1,对out_data赋值就可以了。 介绍 芯片外部引脚很多都使用 inout 类型的,为的是 节省管腿
阅读全文
摘要:参考: 读取的内容只包括:空白位置(空格、换行、制表格(tab和form feeds),注释行、二进制或十六进制的数字。 数字中不能包含位宽说明和格式说明,其中 readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字中不定值x或X,高阻值z或Z,和下划线(_)的
阅读全文
摘要:$dumpfile和$dumpvar是verilog语言中的两个系统任务,可以调用这两个系统任务来创建和将指定信息导入VCD文件. (什么是VCD文件? 答:VCD文件是在对设计进行的仿真过程中, 记录各种信号取值变化情况的信息记录文件 。EDA工具通过读取VCD格式的文件,显示图形化的仿真波形,所
阅读全文
摘要:组合逻辑的case最好要有default,因为如果你的case不全,就会产生锁存器。 即使你的case都包含全了,但是还是建议加上default,因为万一你哪天该代码,把某个case给去掉了,就会产生隐含的latch。所以,最好加上default。 对组合逻辑来讲,case的default和if..
阅读全文
摘要:高阻的存在价值简单的说就是你不需要操控这个期间的时候, 高阻的输出对别的器件是不会有影响的 ,如果你一个单片机IO需要连接两个甚至多个输入,如果输入不支持高阻态,那么无论是高还是低都会对另外的输入端造成影响,使得数据传输中出现问题。 高阻就是阻抗很高,你不连接,接着空气不就是阻抗很高?某个口高阻态了
阅读全文
摘要:参考: 注:parameter可用作在顶层模块中例化底层模块时传递参数的接口,localparam的作用域仅仅限于当前module,不能作为参数传递的接口。 verilog `timescale 1ns/100ps module mem ( clka, wea, addra, dina, clkb,
阅读全文
摘要:综合:将高级抽象层次的电路描述转化为较低层次的描述。 即将语言描述的电路逻辑转化为与门、或门、非门、触发器等基本逻辑单元的互连关系。 实现:布局+布线 综合后生成的门级网表只是表示了门与门之间的虚拟的链接关系,并没有规定每个门的位置以及连线的长度等。 不考虑上板子的话,在vivado只需要用得最多的
阅读全文
摘要:vivado bebug方法 查看错误报告 通过仿真波形查看 打印信号状态($display) 常见错误 wire, reg类型乱用 信号长度不匹配(模块接口传参时) begin, end不匹配 阻塞和非阻塞赋值混用 同一信号在多处被赋值(eg.不同进程块对同一信号赋值) verilog与C语言区别
阅读全文
摘要:$random 返回一个32位的随机数,它是一个带符号的整形数
阅读全文
摘要:测试平台 格式 tb指testbench 模块实例化 verilog / module / `timescale 1ns/1ns module gate_construct ( input i_a, input i_b, input i_c, input i_d, input i_e, output
阅读全文
摘要:书写规范 模块名和文件名 1. 两者一致 2. 一律小写 举例 端口命名规范 1. 一律小写 2. 排列顺序 先全局信号:如复位信号、时钟信号 再按功能进行分组 功能组内按输入、输出、双向 3. 端口定义时,带上方向定义 4. 端口前缀 输入信号:i_data 输出信号:o_data 双向信号:io
阅读全文
摘要:打开vivado项目的时候用项目文件夹的.xpr文件打开,而不是先打开vivado再找到项目
阅读全文
摘要:设置VScode作为vivado编辑器 1. vs code先下载一个verilog HDL/systemVerilog的插件 2. 进入preference settings extensions verilog configuration,找到Linting:Linter,选择xvlog。这里是
阅读全文
摘要:verilog HDL入门 特点 类C语言 并行执行 硬件描述 设计流程 : 自顶向下 前提 :懂C语言和简单的数电知识 简单体验 语法很类似C语言,同时不难看出描述的是一个多路选择器 注意 没考虑时延问题 没有说明如果输入a或b是三态的(高阻时)输出应该是什么。 一 入门例子 例1. 多路选择器
阅读全文
摘要:是延迟的意思,井号后面数字是延迟的数量,延迟的单位由`timescale控制 比如有:`timescale 1ns/1ps 意思就是时间单位为1ns,精度是1ps(继续simulate的时候将显示1ps的时间下的仿真) 那么, 10.5 就是延迟10.5ns的意思 在同步时序数字逻辑电路的veril
阅读全文
摘要:描述: timescale是Verilog HDL 中的一种时间尺度预编译指令,它用来定义模块的仿真 时的时间单位和时间精度。格式如下: `timescale 仿真时间单位/时间精度 注意:用于说明仿真时间单位和时间精度的 数字只能是1、10、100,不能为其它的数字。而且,时间精度不能比时间单位还
阅读全文
摘要:定义的宏可以用在后面的代码中,如 if (request == `TESTEQ1)。
阅读全文
摘要:格式 $display(p1,p2, …,pn); $write(p1,p2, …,pn); 这两个函数和系统任务的作用都是用来输出信息,即将参数p2到pn按参数p1给定的格式输出。参数p1通常称为:“格式控制”,参数p2至pn通常称为“输出列表”。 $display自动地在输出后进行换行,$wri
阅读全文
摘要:转载:https://www.cnblogs.com/rednodel/p/4103987.html 一般情况下使用<=,组合逻辑使用=赋值,时序逻辑使用<=赋值: 举个例子:初始化m=1,n=2,p=3;分别执行以下语句 1、begin m=n;n=p;p=m; end 2、begin m<=n;
阅读全文