电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

eda设计技术教学课件-第8章-用户定义原语

32页
  • 卖家[上传人]:F****n
  • 文档编号:107210306
  • 上传时间:2019-10-18
  • 文档格式:PPT
  • 文档大小:878KB
  • / 32 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第8章 用户定义原语,用户定义原语,设计并定义新的原语单元的集合称为用户定义原语(User-Defined Primitives,UDP) 两种类型:组合用户定义原语和时序用户定义原语 组合用户定义原语的输入决定输出,常用于组合逻辑电路的建模; 用户定义原语的输出由当前的输出和输入决定,常用于触发器、锁存器等时序电路的建模。,UDP的基本形式,attribute_instance primitive udp_identifier ( udp_port_list ) ; udp_port_declaration; /端口申明 initial statements; /初始化语句 table /状态表 table_entity; endtable endprimitive,确认符,前缀,端口列表,UDP的结构形式,前缀attribute_instance是对该UDP的属性进行例化的可选项,UDP的属性是由用户定义原语自身特性决定的。例如,指定输入端口的总线宽度参数属性*Size = 8*。 udp_identifier是确认符,每个用户定义原语必须指定唯一的确认符。例如定义一个确认符为DF

      2、F的D触发器: primitive DFF( Q,D,clk,rst ) ; endprimitive,UDP的端口列表,udp_port_list是端口列表 Verilog HDL规定UDP只能有一个确定的输出端口 输出端口的逻辑取值可以是0、1或x,不允许z;允许一个或多个输入端口,输入端口接受0、1或x 逻辑值,z值当作x处理。 括号内的端口列表,第一个端口必须是输出端口,之后以逗号分隔各输入端口,例如: DFF( Q,D,clk,rst ) ;,UDP的端口列表,输入端口和输出端口分别以关键词input和output申明 紧随其后是端口数据类型申明和端口名 时序逻辑的UDP应申明输出端口的数据类型为寄存器类型 组合逻辑UDP不允许寄存器类型的端口类型申明。 不允许申明双向端口。,例:D触发器的用户定义原语,primitive DFF( Q,D,clk,rst ) ; input D,clk,rst; output Q; reg Q; endprimitive,UDP的语句体,由初始化语句和状态表组成。 initial和table/endtable语句是用户定义原语的语句体,是对

      3、模块的功能进行描述的主体。,primitive DFF(Q,D,clk); input D,clk; output Q; reg Q; initial Q = 1b0; table /clk D Qn Qn+1 r 0 : ? : 0; r 1 : ? : 1; f ? : ? : -; ? * : ? : -; endtable endprimitive,用户定义原语的表符号,Verilog HDL规定了丰富的表符号,UDP的状态表描述语句和表达式需遵循表中的符号规定。,UDP的状态表,状态表介于关键词table和endtable之间 由规定的符号组成多行描述语句 每一行输入端口与输出端口之间的表符号,以冒号分隔 每一行语句以分号结尾。,组合逻辑UDP,每一行表示不同的输入和组合输出,输入端口的表达顺序与端口列表的顺序必须保持一致 可以与端口申明的顺序不同,primitive UDP_or(Z,A,B); input A,B; output Z; table /A B : Z 0 0 : 0; ? 1 : 1; 1 ? : 1; 1 1 : 1; endtable endprimit

      4、ive,例:或门用户定义原语,例1本例定义的UDP是一个2选1多路选择器。,primitive MUX2x1 (Z, Hab, Bay, Sel) ; /Z是输出端,其余为输入端,注意输入端的排列顺序 output Z; input Hab,Bay, Sel; table /* 表中每一行的值是按照Hab Bay Sel : Z的顺序排列的,前3个输入端的排列顺序应与端口列表中的顺序相同 */ 0 ? 1 : 0 ; /Hab Bay Sel : Z 1 ? 1 : 1 ; /Hab Bay Sel : Z ? 0 0 : 0 ; /Hab Bay Sel : Z ? 1 0 : 1 ; /Hab Bay Sel : Z 0 0 x : 0 ; /Hab Bay Sel : Z 1 1 x : 1 ; /Hab Bay Sel : Z endtable endprimitive,UDP的使用方法和内置基元的完全相同。 【例2】调用例1定义好的2选1多路选择器,用3个这样的UDP可以组合成4选1多路选择器,如图所示。,A,B,C,D,程序如下: module MUX4x1 (Z, A,

      5、B, C, D, Sel ) ; input A, B, C, D; input 2:1 Sel ; output Z; MUX2x1 (TL, A, B, Sel1 ) , (TP, C, D, Sel1 ) , (Z,TL,TP, Sel2 ) ; /3个UDP endmodule,可见,UDP的使用方法和内置基元的使用方法完全相同,本例是通过6个输入端A、B、C、D、Sel1、Sel2和1个输出端Z以及2个线网TL、TP实现3个UDP连接的。,时序逻辑UDP,时序逻辑UDP分为 电平敏感型UDP 边沿敏感型UDP 电平敏感型UDP的时序行为与组合逻辑UDP类似。 区别在于电平敏感型UDP的输出端口为寄存器类型,而且状态表的每一行多出一列,即在输入和下一个输出Qn+1之间增加一列表符号,用于表达UDP的当前输出值Qn。,primitive DLatch(Q,En,D); input En,D; output Q; reg Q; table /En D : Qn : Q n+1 0 1 : ? : 1; 0 0 : ? : 0; 1 ? : ? : -; endtable endpr

      6、imitive,例:D锁存器用户定义原语。当锁存控制端En为高电平时,下一状态输出为保持状态;反之,下一状态为数据接收状态,即Q n+1=D。,“?”表示Q n+1的值仅与En和D有关。,上述状态表中,在输入口En和D、输出口Q n+1之间,插入一列当前Q n输出,以“?”表示Q n+1的值仅与En和D有关。如下语句: ? : ? : -;,可解释为:当锁存控制端En为逻辑1,则无论输入口D和当前输出Qn的值为何值,下一个状态的输出为数据锁存状态。在本例状态表中,Qn一直取任意值,属多余项。,边沿敏感型UDP,边沿敏感型UDP的每一行只能指定一个输入口的上升沿(01)、下降沿(10)等变化对,或按表符号r、f、p或n等表达变化对。,状态表每一行的变化说明语句中,不能出现两个或两个以上的变化对。,(01) 0 0 : ? : 0; /(1),合法的变化说明 r 0 0 : ? : 0; /(2),与语句(1)等效 (01) (01) 0 : ? : 0; /(3),两个端口的变化对说明,非法表达 r r 0 : ? :0; /(4),两个端口的变化对说明,非法表达,表符号的顺序,状态表中

      7、,表符号的安排顺序分别是输入端口、输出端口的当前状态、输出端口的下一个状态,输入端口与端口列表的顺序一致。 用户定义原语允许在状态表内混合使用电平敏感和边沿敏感的多分支变化说明,当输入变化时,先执行边沿敏感分支,之后再执行电平敏感分支。 当两种类型的分支指定不同的输出值,结果由电平敏感分支决定。,例:边沿触发JK触发器UDP,电平敏感和边沿敏感混合描述的边沿触发JK触发器。如表所示,边沿触发JK触发器定义如下具有四种类型的功能: 置1功能:Qn+1=1,当且仅当变化说明序号(1)、(2)或(8); 置0功能:Qn+1=0,当且仅当变化说明序号(3)、(4)或(7); 反向保持功能:Qn+1= Qn,当且仅当变化说明序号(5)、(9)或(10); 正向保持功能:Qn+1= Qn,当且仅当变化说明序号(6)、(11)、(12)或(13);,电平敏感描述,边沿敏感描述,primitive udp_edge_jkff(Q,clk,J,K,SD,RD); input clk,J,K,SD,RD; output Q; reg Q; table / clk J K SD RD : Qn : Qn+1

      8、 ? ? ? 0 1 : ? : 1 ; /置位 ? ? ? * 1 : 1 : 1 ; ? ? ? 1 0 : ? : 0 ; / 复位 ? ? ? 1 * : 0 : 0 ; r 0 0 0 0 : 0 : 1 ; / 时钟驱动变化 说明分支 r 0 0 1 1 : ? : - ; r 0 1 1 1 : ? : 0 ; r 1 0 1 1 : ? : 1 ; r 1 1 1 1 : 0 : 1 ; r 1 1 1 1 : 1 : 0 ; f ? ? ? ? : ? : - ; b * ? ? ? : ? : - ; / JK变化 说明分支 b ? * ? ? : ? : - ; endtable endprimitive,时序UDP的初始化,时序用户定义原语输出端口的初始化用于指定输出端口的初始状态,以关键词initial开始,紧随过程赋值语句对输出端口赋值,其基本形式为: initial output_port = initialization_value; initial语句布置在table之前,表达式左侧的output_port是UDP内申明的reg型输出端口,表达式右侧的

      9、initialization_value是初始化值。 UDP初始化语句内不允许使用延时赋值。,例:指定RS触发器输出端口的初始值为1,由于UDP只有一个输出端口,因此只允许出现一条初始化赋值语句, 赋值语句的操作对象是reg寄存器类型的输出端口,端口确认符必须一致。 赋值表达式的右侧只能使用1b1、1b0、1bx、1或0。,primitive SRFF(Q, S, R); output Q; reg Q; input S, R; initial Q = 1b1; /输出端口的初始值为逻辑1 table / S R : Qn : Qn+1 1 0 : ? : 1 ; f 0 : 1 : - ; 0 r : ? : 0 ; 0 f : 0 : - ; 1 1 : ? : 0 ; endtable endprimitive,用户定义原语建模,在系统层次化结构中,用户定义原语是一个独立的模块,与其他模块有相同的语法层次和相应的抽象级别。 在源文件的模块结构中,用户定义原语可以出现在模块内任何需要例化的地方,当然不能超出模块的module和endmodule范围。,UDP建模的基本形式,udp_namedrive_strengthdelay2attribute_instanceudp_instance (output_port, input_port) ; udp_name:用户定义原语模块名,例如SR触发器UDP的SRFF; drive_strength用于指定UDP的驱动强度; delay2用于指定UDP的延时赋值; attribute_instance用于例化UDP的属性; 上述三项与模块的相关规则相同。 udp_instance是模块中被指定的UDP例化名; output_port和input_port是分别与模块连接的输出端口和输入端口列表,其连接顺序必须与模块内相关端口的顺序保持一致。,(1)设计T触发器用户定义原

      《eda设计技术教学课件-第8章-用户定义原语》由会员F****n分享,可在线阅读,更多相关《eda设计技术教学课件-第8章-用户定义原语》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.