付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑VerilogHDL源程序库-新品速递在熟悉了VerilogHDL语法之后,使用VerilogHDL设计FPGA遇到的困难可能就是不知如何用VerilogHDL的语句去描述想要实现的电路功能。要克服这一困难,除了提高数字电路设计功底之外,很重要的一点就是要学习他人的经验,多看有经验的设计者设计的源程序。我们提供VerilogHDL源程序库的目的就是想收集尽可能多的谈设计经验的文章和经典的VerilogHDL设计,供大家学习参考。同时也希望大家能提供一些相关资料,使这个程序库能不断得到充实!状态机举例你可以指定状态寄存器和状态机的状态。以下是一个有四种状态的普通状态机。//Thesearethesymbolicnamesforstates//定义状态的符号名称parameter[1:0]S0=2'h0,S1=2'h1,S2=2'h2,S3=2'h3;//Thesearethecurrentstateandnextstatevariables//定义当前状态和下一状态变量reg[1:0]state;reg[1:0]next_state;//state_vectorstate//状态向量的转移关系always@(stateoryorx)beginnext_state=state;case(state)S0:beginif(x)beginnext_state=S1;endelsebeginnext_state=S2;endendS1:beginif(y)beginnext_state=S2;endelsebeginnext_state=S0;endendS2:beginif(xy)beginnext_state=S3;endelsebeginnext_state=S0;endendS3:beginnext_state=S0;endendcaseendalways@(posedgeclkorposedgereset)beginif(reset)beginstate=S0;endelsebeginstate=next_state;endend同样的状态机也可以用下面的代码以“Onehot”编码方式实现。//Thesearethesymbolicnamesforstates//定义状态的符号名称parameter[1:0]S0=2'h0,S1=2'h1,S2=2'h2,S3=2'h3;parameter[3:0]s0=4'h1,s1=4'h2,s2=4'h4,s3=4'h8;//Thesearethecurrentstateandnextstatevariables//定义当前状态和下一状态变量reg[3:0]state;reg[3:0]next_state;//state_vectorstate//状态向量的转移关系always@(stateoryorx)beginnext_state=state;case(1)state[S0]:beginif(x)beginnext_state=1S1;endelsebeginnext_state=1S2;endendstate[S1]:beginif(y)beginnext_state=1S2;endelsebeginnext_state=1S0;endendstate[S2]:beginif(xy)beginnext_state=1S3;endelsebeginnext_state=1S0;endendstate[S3]:beginnext_state=1S0;endendcaseendalways@(posedgeclkorposedgereset)beginif(reset)beginstate=1S0;endelsebeginstate=next_state;endend译自Celia的Verilog网站可综合风格的计数器设计写一个既紧凑又能满足定时要求的定时器可能会有一点棘手。根据你在面积和速度方面的要求,以及你所使用的具体器件的不同,你可能需要尝试完全不同的设计方法。如果你需要设计一个计数速度很快的计数器,你先查找一下你所使用的FPGA设计工具中是否有厂家提供的现成的计数器单元。因为厂家提供的设计单元库针对特定的器件进行了优化,所以使用这些器件可以达到快的速度。如果你的设计需要应用到几种不同的FPGA中,因而要求独立于特定的设计单元库,那么你就只能自己设计计数器了。当然,容易的计数器设计就是count=count+1,但是你可能得不到的结果。如果是计数值较小的计数器,使用序列器方法会得到较好的结果。例如:always@(count)case(count)2'h0:next_count=2'h1;2'h1:next_count=2'h2;2'h2:next_count=2'h3;2'h3:next_count=2'h0;endcaseendalways@(posedgeclkorposedgereset)beginif(reset)begincount=0;endelseif(enable)begincount=next_count;endend另一种方法是异步产生计数使能,条件是使能信号必须没有毛刺并且与时钟信号有恰当的定时关系。
例如:
wiregate_clk=clkenable;always@(posedgegate_clkorposedgereset)beginif(reset)begincount=0;endelsebegincount=count+1;endend
另一种类型的计数器是波纹计数器。这种计数器适合速度较慢、要求低功耗的场合,可以用Verilog很容易地实现。
例如:
always@(count)begincount0=count[0];count1=count[1];count2=count[2];endalways@(posedgeclkorposedgereset)beginif(reset)begincount[0]=0;endelsebegincount[0]=~count[0];endendalways@(posedgecount0orposedgereset)beginif(reset)begincount[1]=0;endelsebegincount[1]=~count[1];endendalways@(posedgecount1orposedgereset)beginif(reset)begincount[2]=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院dip年终总结(2篇)
- 学校教学质量提升自评报告
- 2026年森林防火瞭望员新员工岗位专业知识笔试题目及答案
- 社区生鲜冷柜除霜消杀记录台账指南(2025版)
- 文创市集摊位布置与商品陈列规范
- 石材加工粉尘收集治理指南(2026版)
- 拖拉机操作维护保养指南
- 少儿托管班学生接送签到交接制度
- 市政道路工程施工组织设计
- 事业单位江苏省事业单位社会保障服务中心笔试专项刷题题库附参考答案
- 2026年廉政知识专题测试题及答案
- 城乡教育公平之困与破局:现状、成因与路径探索
- 2026-2027学年人美版(新版)初中美术九年级上册(全册)教学设计(附目录p89)
- 2026年机关事业单位工勤人员计算机操作员高级工考试试题及答案
- 大连船舶重工集团笔试题目及答案
- (正式版)DB11∕T 1733-2020 《绿地保育式生物防治技术规程》
- 2026年中小学教师师德师风知识考试试题及答案
- T∕CSIA 022-2025企业体验式安全教育基地建设规范
- 2026浙江国检检测技术股份有限公司第一轮招聘员工拟录用对象笔试历年常考点试题专练附带答案详解
- GB/T 5124.1-2026硬质合金化学分析方法第1部分:总碳量的测定重量法和气体容量法
- 华为运输包装设计规范(内容系统全面)
评论
0/150
提交评论