- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8位计数器UDP的仿真结果 Bye-bye! * * * * * * 第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是确认符,每个用户定义原语必须指定唯一的确认符。例如定义一个确认符为DFF的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语句是用户定义原语的语句体,是对模块的功能进行描述的主体。 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的状态表描述语句和表达式需遵循表中的符号规定。 符号 符号意义 备注 0 逻辑值0 ? 1 逻辑值1 ? x 未知逻辑值x 两类UDP的输入口都允许使用逻辑值x ? 代替任意0,1或x 输出口不允许使用?符号 b 代替任意0或1 输入口允许,但输出口不允许 - 无变化 仅允许用于时序逻辑UDP的输出口 (vw) v至w的变化 仅允许用于输入口,v和w可以在0,1,x,?和b之间任意取值。 * 等同于(??) 输入口的任意变化 r 等同于(01)或↑ 输入口的上升沿 f 等同于(10)或↓ 输入口的下降沿 p 代替任意(01)、(10)或(x1) 输入口的任意一种正边沿 n 代替任意(10)、(1x)或(
原创力文档


文档评论(0)