FPGA基础知识-用户自定义原语

这篇具有很好参考价值的文章主要介绍了FPGA基础知识-用户自定义原语。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

学习目标

学习内容

1.UDP的组成

2.UDP定义规则

3.表示组合逻辑的UDP

4.表示时序逻辑的UDP

5.UDP表中的缩写符号

6.UDP设计指南 

学习时间

学习总结


学习目标:

提示:这里可以添加学习目标

理解编写UDP的规则,明白UDP的各个组成部分。

学会编写表示时序和表示组合逻辑的两种不同的UDP,

理解UDP的调用(实例引用)方法。

为了使UDP的行为表达得更加简洁和易懂,应记住定义UDP的各种缩写符号。


学习内容:

提示:这里可以添加要学的内容

1.UDP的组成

    UDP 的定义以关键字primitive作为开始,然后指定原语名称、输出端口和输人端口。在端口声明部分将端口声明为output或者input。在表示时序的UDP中,输出端口必须被声明为reg类型,而且还需要有一条可选的initial语句,用于初始化时序逻辑UDP的输出端口。UDP状态表是UDP中最重要的部分,它以关键字table 开始,以关键字endtable结束。状态表定义了如何根据输人状态和当前状态得到输出值,该表也是一个查找表,类似于逻辑真值表。原语定义以关键字endprimitive 结束。

2.UDP定义规则

1. UDP只能采用标量(即1位)输入端口,允许有多个输入端口。
2. UDP只能允许一个标量(即1位)输出端口。输出端口必须出现在端口列表的第一个位
置,绝对不允许有多个输出端口。
3.在声明部分,输出端口以关键字output声明。因为表示时序逻辑的 UDP需要保存状态,
所以其输出端口必须声明为reg类型。
4.输入端口以关键字input声明。
5.表示时序逻辑的UDP中的状态可以用initial语句初始化。该语句是可选的,它将一个1
位的值赋给reg类型的输出。
6.状态表的项可以包含值0,1或x。UDP不能处理z值。传送给UDP的z值被当做×值。

3.表示组合逻辑的UDP

表示组合逻辑的UDP根据UDP内部所列出的表示输入和输出关系的状态表.由输人确定输出值。

状态表是UDP定义中最重要的部分。用表示与门的UDP模型来解释状态表最容易使读者理解。下面让我们不使用Verilog语言所提供的与门.自己来定义一个表示与门的原语,并将其命名为udp_and。

1.状态表每一行中<input#>的顺序必须与它们在端口列表中的出现顺序相同。设计UDP时必须牢记这一点,这一点非常重要。设计者经常搞错输入的顺序,因而得到错误的输出值。

2.输入和输出以“:”分隔。
3.状态表的每一行以“;”结束。
4.能够产生确定输出值的所有输入项组合都必须在状态表中列出。否则,如果在状态表各
行中找不到与这组输入对应的项,相应的输出就是x。商业模型中经常使用默认输出值x注意,udp_and 的状态表不处理a或b 的值为x的情况。

4.表示时序逻辑的UDP

表示时序逻辑的UDP与表示组合逻辑的UDP在定义形式和行为功能上有所不同。表示时序逻辑的UDP的不同之处在于以下几点:

1.表示时序逻辑的UDP的输出必须声明为reg类型.

2.表示时序逻辑的UDP的输出可以用initial语句初始化。

3.状态表的格式也稍有不同。

5.UDP表中的缩写符号

FPGA基础知识-用户自定义原语

6.UDP设计指南 

UDP只能进行功能建模,不能对电路时序和制造工艺(例如CMOS,TIL和 ECL)进行建模。使用UDP的主要目的是以简洁的形式建立模块功能部分的模型,而module总是用于建立完整的模块模型,包括电路时序和制造工艺。

只有惟一输出端口的模块,才能使用UDP建模。如果设计的模块含有一个以上输出端口,只能使用module对其建模。

UDP输人端口数目的上限由用户使用的Verilog仿真器决定。然而,对Verilog仿真器的最低要求是它至少要能够处理具有9个输入端口的表示时序逻辑的UDP和具有10个输入口的表示组合逻辑的UDP。

·UDP一-般是使用内存中的查找表来实现的。随着输入端口数目的增加,查找表的输入组合项数呈指数级增长。结果,处理 UDP 的内存需求也以同样的方式增长。所以,输入端口数目过多的模块不宜使用UDP实现。

UDP并不总是设计功能模块的最佳方式。有时将功能模块设计成module更容易。例如,以UDP的方式设计八选一的多路选择器并不可取,因为UDP表的输入项数太多。而用数据流描述方式或行为描述方式要简单得多。决定是否使用UDP表示功能模块时,复杂度是重要的考虑因素。


 

学习时间:

提示:这里可以添加计划学习的时间

例如:

20230619


学习总结:

提示:这里统计学习计划的总量

用户自定义原语(UDP)通过使用查找表来定义自己的Verilog 原语。UDP提供了一种便利的方式来设计这种特定的功能模块。

UDP只能具有一个输出端口。UDP与module在同---个层次中定义。UDP的调用(实例引用)方法与门级原语的调用方法完全相同。状态表是UDP说明中最重要的部分。

表示组合逻辑的UDP用于描述组合电路。该电路的输出只是输人信号的纯组合逻辑函数。表示时序逻辑的UDP用于定义具有时序控制端口的模块。像锁存器和触发器这样的模块都可以用时序UDP描述。时序UDP以状态机的方式建模,它含有当前状态和下--状态。下一状态也就是UDP的输出。边沿敏感和电平敏感的描述可以混合出现在同一个UDP中。

缩写符使得UDP状态表项更加简洁。应该尽可能地使用缩写符。

描述功能模块时,重要的是决定究竟用UDP还是用module来实现它。必须全面考虑内存的需求和复杂度,做必要的折中。文章来源地址https://www.toymoban.com/news/detail-501857.html

到了这里,关于FPGA基础知识-用户自定义原语的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA基础知识点

    基础知识 逻辑值 逻辑0:表示低电平,也就是对应电路GND 逻辑1:表示高电平,也就是对应电路VCC 逻辑X:表示未知,有可能是高电平也有可能是低电平 逻辑Z:表示高阻态,外部没有激励信号,是一个悬空状态 数字进制格式 Verilog数字进制格式包括 二进制(b) , 八进制(

    2024年02月03日
    浏览(53)
  • FPGA基础知识-模块和端口

    目录 学习目标 学习内容  端口 端口列表 端口声明 端口链接规则 学习时间 总结 1.说明Verilog 模块定义中的各个组成部分,例如模块名、端口列表、参数、变址声明、数据流描述语句、行为语句、调用(实例引用》其他模块以及任务和函数等。 2.说明verilog模块定义中的各个组

    2024年02月08日
    浏览(57)
  • FPGA基础知识-开关级建模

    目录 学习目标 学习内容 1.MOS开关 2.CMOS开关 3.双向开关  4.电源和地 5.阻抗开关 6.开关中的延迟说明 学习时间 学习总结 提示:这里可以添加学习目标 1.能够描述基本 MOS开关:nmos.pmos和cmos。 2.理解双向传输开关、电源和地的建模方法。 3.识别阻抗MOS开关。 4.解释在基本MOS 开关

    2024年02月10日
    浏览(38)
  • FPGA基础知识-门级建模

    目录 学习目标 学习内容 1.门的类型  2.门延迟 学习时间 学习小结 学习Verilog 提供的门级原语 理解门的实例引用、门的符号以及andor,bufnot类型的门的真值表 学习如何根据电路的逻辑图来生成verilog描述 讲述门级设计中的上升、下降和关断延迟 解释门级设计中的最小、最大和

    2024年02月10日
    浏览(55)
  • FPGA基础知识-行为级建模

    目录 学习目标 学习内容 1.结构化过程语句 2.过程赋值语句 3.时序控制 4.条件语句 5.多路分支语句 6.循环语句 7.顺序块和并行块      8.生成块 学习时间 学习产出 解释结构化过程always和initial在行为级建模中的重要性, 定义阻塞( blocking〉和非阻塞( non-blocking )过程性赋值语句

    2024年02月12日
    浏览(52)
  • FPGA基础知识-任务和函数

    目录 学习目标 学习内容 1.任务和函数的区别 2.任务 3.函数 学习时间 学习总结 1.理解任务和函数之间的区别。 2.理解定义任务所需的条件,学会任务的声明和调用。 3.理解定义函数所需的条件.学会函数的声明和调用。 提示:这里可以添加要学的内容      在 Verilog中,任务

    2024年02月10日
    浏览(37)
  • FPGA基础知识-实用建模技术

    目录 学习目标: 学习内容: 1.过程连续赋值 2.改写参数 3.条件编译和执行 4.时间尺度 5.常用的系统任务 学习时间: 学习总结 提示:这里可以添加学习目标 1.掌握怎样在模块调用时用defparam语句重新定义参数值J解释条件编译和Verilog 插述部件的执行。· 2.认识和理解系统任务

    2024年02月10日
    浏览(39)
  • 全面解析FPGA的基础知识

    FPGA(Field- Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展出来的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA 普遍用

    2024年01月25日
    浏览(44)
  • FPGA基础知识-时序和延迟

    目录 学习目标: 学习内容: 1.延迟模型的类型 2.路径延迟建模 3.时序检查 4.延迟反标注 学习时间: 学习总结 提示:这里可以添加学习目标 ·鉴别Verilog 仿真中用到的延迟模型的类型,分布延迟、集总( lumped)延迟和引脚到引脚〔路径)的延迟。 能解释rise. fall和 turn-off延迟

    2024年02月09日
    浏览(41)
  • 【FPGA零基础学习之旅#9】状态机基础知识

    🎉欢迎来到FPGA专栏~状态机基础知识 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 🔸 Hello状态机例程 : RTL视图: 状态

    2024年02月16日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包