FPGA学习笔记(2)

这篇具有很好参考价值的文章主要介绍了FPGA学习笔记(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序语句

assign

assign 语句是连续赋值语句,一般是将一个变量的值不间断地赋值给另一变量,格式一般为:

        assign a = b (逻辑运算符)c…;

assign 语句的功能属于组合逻辑的范畴,应用范围可以概括为一下几点: (1)持续赋值; (2)连线; (3)对 wire 型变量赋值,wire 是线网,相当于实际的连接线。

always

always 语句是条件循环语句,执行机制是通过对一个称为敏感变量表的事件驱动来实现的always 语句的基本格式是:

        always @(敏感事件)begin

                程序语句

        end

always 是“一直、总是”的意思,@后面跟着事件。整个 always 的意思是:当敏感事件的条件 满足时,就执行一次“程序语句”。敏感事件每满足一次,就执行“程序语句”一次。

FPGA学习笔记(2)

当敏感信号非常多时很容易就会把敏感信号遗漏,为避免这种情况可以用“*”来代替。

FPGA学习笔记(2)

这种条件信号变化结果立即变化的 always 语句被称为“组合逻辑”。

FPGA学习笔记(2)

 这种信号边沿触发,即信号上升沿或者下降沿才变化的 always,被称为“时序逻辑”,

注:rst_n==1‘b0中      1'b0代表是 1位宽 二进制 数字0     if(rst_n==1'b0)表示低电平复位

同步复位代码结构:

FPGA学习笔记(2)

异步复位代码结构:

FPGA学习笔记(2)

D触发器代码:

FPGA学习笔记(2)

rst_n(复位)低电平有效,clk上升沿时将d赋值给q。

时钟

注:1、不要使用代码产生时钟信号,产生的时钟信号不稳定。

        2、不要将信号放在时序逻辑敏感列表。例如:(  always @(posedge d )begin )

阻塞赋值与非阻塞赋值

阻塞赋值使用 “=”语句;非阻塞赋值使用“<=”语句。

阻塞赋值:在一个“begin…end”的多行赋值语句,先执行当前行的赋值语句,再执行下一行 的赋值语句。

非阻塞赋值:在一个“begin…end”的多行赋值语句,在同一时间内同时赋值。

FPGA学习笔记(2)

在上述例子中,前四行为阻塞赋值、后四行为非阻塞赋值。设初始值 c = 0、a = 1、d = 0;则阻塞赋值的结果为 c = 1、d = 2。非阻塞赋值的结果为 c = 1、d = 1。

 文章来源地址https://www.toymoban.com/news/detail-481136.html

到了这里,关于FPGA学习笔记(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog语法(三)——赋值语句

    在 Verilog 中,阻塞赋值、非阻塞赋值和连续赋值是用于赋值操作的不同语法。它们之间的区别主要在于赋值时机和对后续代码执行的影响。 阻塞赋值使用等号 = 进行赋值,它的作用是在当前时钟周期内立即更新目标变量的值,然后继续执行下一条语句。因为它会阻塞后续语句

    2024年02月06日
    浏览(58)
  • python中赋值语句教程

    赋值语句创建对象的引用:赋值语句总是创建对象的引用,而不是复制对象。因此,Python中的变量更像是指针,而不是数据储存区域。 变量在首次赋值时会被创建:因此不需要提前声明变量。 变量在引用前必须先赋值:如果引用未赋值的变量会报错 (1. 普通形式 (2. 序列赋

    2024年02月04日
    浏览(42)
  • 跳转语句(个人学习笔记黑马学习)

          如果是奇数输出,偶数不输出    

    2024年02月11日
    浏览(41)
  • 04 - C++学习笔记: 循环语句和跳转语句

    在C++编程中,循环语句和跳转语句是非常重要的控制结构。循环语句允许重复执行一段代码,而跳转语句允许在程序执行过程中改变执行的流程。本篇笔记将介绍C++中常用的循环语句和跳转语句,并通过例子进行说明。 C++ 编程语言提供了以下几种循环类型。点击链接查看每

    2024年02月12日
    浏览(46)
  • 【C++】a=b=2;这样的赋值语句不正确

    在C++中,赋值操作符 = 的右结合性意味着赋值表达式从右向左进行求值。因此,表达式 a = b = 2; 实际上被解释为 a = (b = 2); 。 在这种情况下,赋值操作符 = 的右边是右值 2,它可以被赋给左值 b,因为左值可以接受右值的赋值。然而,将右值 2 赋给 b 后,赋值操作符 = 的结果是

    2024年02月09日
    浏览(31)
  • LL(1)语法分析设计原理与实现——以赋值语句为例

    一、实验目的 语法分析的设计方法和实现原理;LL(1)分析表的构造;LL(1)分析过程;LL(1)分析器 的构造; 二、实验内容 实现 LL(1)分析中控制程序(表驱动程序);完成以下描述赋值语句的 LL(1) 文法的 LL(1)分析过程。 G[S]:S→V=E E→TE′ E′→ATE′|ε T→FT′ T′→MFT′|ε F→

    2024年02月03日
    浏览(53)
  • Verilog语法——6.测试文件使用for和random语句进行赋值

    参考资料 【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】 题目要求: 涉及到for语句的赋值语句: 小贴士 verilog不支持c/c++中的自增语句i++,因此只能写成i=i+1 for语句应该用在initial begin(…) end中,此处只展示关键代码 6.2.1 random语句

    2024年01月17日
    浏览(43)
  • C#学习笔记--逻辑语句(分支和循环)

    条件分支语句 条件分支语句可以让顺序执行的代码逻辑产生分支,满足对应条件地执行对应代码逻辑。 IF语句 if语句的小练习--分辨奇偶数字 语句块的知识 {}括起来的逻辑语句是一个代码块,注意变量在代码块中的生命周期 Switch 语句 当判断条件过多时候,使用if elseif 来进

    2024年02月08日
    浏览(46)
  • 学习笔记整理-JS-04-流程控制语句

    1. if 语句的基本使用 if语句是最简单的 条件语句 ,也称 选择语句 。它通常结合else一起使用,表示 如果...就...否则... 举例1:用户输入一个数字,如果这个数字是偶数,则弹出对话框显示\\\"偶数\\\",否则弹出对话框显示\\\"奇数\\\"。 执行流程图 举例2:用户输入年龄,判断用户是否

    2024年02月13日
    浏览(41)
  • SQL语句学习笔记(对库、表、字段、的操作)

    查看mysql的状态 status 启动、停止 mySQL服务 图像界面方法: dos窗口执行:services.msc 控制面板–管理工具–服务 命令行方法: 启动: net start mysql80 停止: net stop mysql80 添加环境变量: 在path编辑:添加路径:C:Program FilesMySQLMySQL Server 8.0bin cmd登录:mysql -h localhost -u root -p 输

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包