- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
verilog复习提纲
感谢 张 孙D触发器:同步时序触发是输出信号q和qn与时钟的上升沿同步,也就是reset=0时不会马上出发还需要满足clk=1时,输出q和qn才会翻转。异步时序触发是输出信号q和qn在reset=0时立刻翻转同步时序图像:异步时序图像:D触发器程序代码:功能模块:`timescale 1ns/1nsmodule DFF (rest,d,clk,q,qn); input rest,d,clk; output reg q,qn; /* //not same step always@(posedge clk,negedge rest) if(!rest) begin q=0; qn=1;endelse begin q=d; qn=!d; end *///same step always@(posedge clk) if(!rest) begin q=0; qn=1; end else begin q=d; qn=!d; end endmodule Tb模块 :`timescale 1ns/1nsmodule DFF_TB ; reg rest_i,d_i,clk_i; wire q_o,qn_o; DFF DUT(.rest(rest_i),.d(d_i),.clk(clk_i), .q(q_o),.qn(qn_o)); always #5 clk_i=!clk_i; initial begin clk_i=0; rest_i=0; #50 d_i=1; rest_i=1; #50 d_i=0; #40 d_i=1; #40 rest_i=0; #100 rest_i=1; #1000 $stop; end endmodule 分频器:所谓分频器就是把原有的高频clk信号分为低频输出信号,就是相同时间输出比输入的信号周期更少。如下图,clk_in信号一个周期是10ns,clk_out信号一个周期是80ns,所以下图是一个8分频,对Divider_count赋值可以实现2^n的分频, clk_in的定义是为了方便时钟控制信号,例如实现同步时序或异步时序;n_rst的定义是复位的意思,是为了使得设计出的电路跑飞时可以重新工作,clk_out是输出,Divider_counter是中间变量,使用它计数,赋值实现功能,不能在input,output中定义,令外,程序中注释掉得程序可以实现4分频,是利用逻辑比较的方法,比较特殊不是所有分频都可以用,此外想用这段程序前面定义的变量要改改。本程序的key就是10行,23行和24行:10行任意2^n分频,23行计数,24行赋值,详析:因为本程序是8分频,所以counter定义了3位,来源于(2^3)-1=2^2+2^1,计数:000,001,010,011,100,101,110,111,赋值:根据最高位来赋值八分频图像:(1)功能模块:`timescale 1ns/1nsmodule divider_4(clk_in,n_rst,clk_out); input clk_in,n_rst; output clk_out; reg clk_out; parameter Divider_count=3; //set the number of divider----2^3=8 reg [Divider_count - 1:0] counter; always @ (posedge clk_in,negedge n_rst) if(!n_rst) begin clk_out=0; counter=0; end else //*/ begin counter=counter+1; clk_out=counter[Divider_count - 1]; end //*/ /* begin if((counter==0)||(counter==1)) clk_out=0; else clk_out=1; if(counter==3) counter=0; else counter=counter+1; end */endmodule(2)tb模块:`timescale 1ns/1nsmodule divider_4_tb; reg clk_in_i,n_rst_i; wire clk_out_o; divider_4 DUT(.n_rst(n_rst_i), .clk_in(clk_in_i), .clk_out(clk_out_o) ); always #5 clk_in_i=!clk_in_i; initial begin clk_in_i=0; n_rst_i=0; #50 n_rst_i=1; #200 n_rst_i=0; #100 n_rst_i=1; #1
您可能关注的文档
- 《大学英语II》新闻听力训练 原文.doc
- 肖申克的救赎中英文影评全.docx
- 高工英语第一课时间的价值原文加翻译.doc
- TOEFL写作机经总结.doc
- UG有限元分析实例及no parallel process created解决方法.doc
- Parallel Job routine的用法.docx
- RecoverMyFiles数据恢复教程.docx
- 曼谷攻略2014.doc
- 项目融资00刘老师.doc
- recoverpoint 4.0介绍.docx
- 洋葱销售SOP流程及关键动作相关知识测试试卷.docx
- 深度解析《GBT 43841-2024内蒙古绒山羊》.pptx
- 电气设备运维及机械部件相关知识测试试卷.docx
- 深度解析《GBT 43843-2024网络协同制造平台数据服务要求》.pptx
- 思维倾向与开放性自我评估试卷.docx
- 危险化学品企业特殊作业安全相关知识考试试卷.docx
- 深度解析《GBT 43844-2024IPv6地址分配和编码规则 接口标识符》.pptx
- 智慧教学整体解决方案(1).doc
- 多重耐药菌感染防治知识及预防措施试卷.docx
- 深度解析《GBT 43845-2024基于扫描氮-空位探针的微弱静磁场成像测量方法》.pptx
文档评论(0)