文章分类 -  verilog

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

点击右上角即可分享
微信分享提示