当前位置: 首页 > news >正文

FPGA设计思想与验证方法系列学习笔记001

业精于勤荒于嬉,行成于思毁于随。

学无止尽~

小白常犯错误整理

Question1: input/output端口定义

对于设计模块而言:

input 的数据类型必须是wire,

output的数据可以是wire也可以是reg。

对于TESTBENCH仿真而言


激励文件中,input给被测模块(测试文件的输出)可以是wire/reg;

被测模块的输出(测试文件的输入)一定是wire。

当然,如果你觉得麻烦就用system verilog的数据类型logic

Question2: 按位与和缩位

按位与

reg[1:0] a=2'b11

reg[1:0] b= 2'b10;

reg[1:0] c;

reg d;

c= a&b;  按位与操作,最终结果c=2'b10;

缩位

d = | c; // c =2'b10,最终d的结果是1.

(补充说明一下)

比如说:按位同或(~^或^~)

2个多位操作数按位进行同或运算,各位的结果按顺序组成一个新的多位数。例如,a=2’b10,b=2’b11,则a^~b的结果为2’b10;(相同为1,不同为0)

缩减操作都是对于一个对象而言,这里说的对象,不是男女关系的那种意思,我是说对于一个操作数而言。或者说对一个多比特信号进行操作的,包括以下几种:

缩减与(&):

对一个多位操作数进行缩减与操作,先将它的最高位与次高位进行与操作,其结果再与第二次高位进行与操作,直到最低位。例如,&(4’b1011)的结果为0;

Question3:parameter和localparam

parameter:

本module内有效的定义,可用于参数传递;

localparam:

只能在模块内部声明;

(不推荐使用defparam,仿真会失败!)

Question4:阻塞与非阻塞

阻塞:‘=’

等等我,你先计算,然后把结果给我,我等你。风险:竞争冒险。

适用于组合逻辑。

非阻塞:‘<=’

拍一张快照,拿到寄存器的当前值,开干。

适用于时序逻辑。

Question5:语法乱来

assign语句不能用在initial中。

Question6:边沿检测

首先我们要确认一件事情。

检测上升沿(~D[1])&&(D[0])

这是一个上升沿没有问题,对吧。

 检查下降沿(D[1])&&(~D[0])

这是一个下降沿,对吧。

reg [1:0] D;
D<= {D[0],data};

对于这个寄存器而言,D[1]就是前一时刻,跑的快,D[0]就是后一时刻,所以在图上看就在后面。

Question7:assign和always的用法

assign 用于描述组合逻辑,表示信号之间的连续关系。

特点​:

  • 只能用于 wire 类型信号
  • 右侧表达式变化时立即更新左侧
  • 不能包含时序控制(如延迟)
  • 适合简单的组合逻辑

always 块可以描述组合逻辑或时序逻辑,取决于敏感列表。

(1) 组合逻辑 always 块

组合逻辑 always 块

特点​:

  • 敏感列表使用 @(*) 或列出所有输入信号
  • 块内赋值使用阻塞赋值 =
  • 必须对所有可能的输入组合给出输出(避免锁存器)

(2) 时序逻辑 always 块

特点​:
• 敏感列表包含时钟边沿(posedge/negedge)
• 块内赋值使用非阻塞赋值 <=
• 可以描述寄存器、状态机等时序逻辑

(持续更新)

http://www.dtcms.com/a/272099.html

相关文章:

  • XCZU47DR-2FFVG1517I Xilinx FPGA AMD ZynqUltraScale+ RFSoC
  • 原生微信小程序研发,如何对图片进行统一管理?
  • 从代码生成到智能运维的革命性变革
  • 基于elementUI的el-autocomplete组件的自动补全下拉框实践
  • LFU 缓存
  • Vue2_element 表头查询功能
  • Vue+Element Plus 中按回车刷新页面问题排查与解决
  • pytorch 神经网络
  • 深入理解机器学习
  • 【深度学习新浪潮】什么是持续预训练?
  • 深度学习中的常见损失函数详解及PyTorch实现
  • B2、进度汇报(— 25/06/16)
  • Sigma-Aldrich细胞培养基础知识:细胞培养的安全注意事项
  • Vue 中监测路由变化时,通常不需要开启深度监听(deep: true)
  • 基于Python的旅游推荐协同过滤算法系统(去哪儿网数据分析及可视化(Django+echarts))
  • 《Stata面板数据分析:数据检验、回归模型与诊断技术 - 以NLSW工资研究(公开数据)为例》
  • android studio 运行,偶然会导致死机,设置Memory Settings尝试解决
  • 不止于快:金士顿XS2000移动固态硬盘如何重塑你的数字生活
  • 机器学习1
  • ssh: connect to host github.com port 22: connection refused
  • Web学习笔记2
  • 使用球体模型模拟相机成像:地面与天空的可见性判断与纹理映射
  • 「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
  • 基于Python的程序员数据分析与可视化系统的设计与实现
  • 三、神经网络——网络优化方法
  • 线上事故处理记录
  • XMAPP MySQL 启动后自动停止
  • 【实战】Dify从0到100进阶--文档解读(1)开源许可和大模型适配
  • Using Spring for Apache Pulsar:Transactions
  • MySQL断开连接后无法正常启动解决记录