版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-10-153.5 Verilog HDL3.5 Verilog HDL设计举例设计举例 v3.5.1 组合电路设计组合电路设计v常用的设计方法常用的设计方法1、用、用assign语句对语句对wire型变量进行赋值,综合后的结果型变量进行赋值,综合后的结果是组合逻辑电路。是组合逻辑电路。2、用、用always (敏感信号表敏感信号表)注意:注意:always块内赋值语句左边的变量是块内赋值语句左边的变量是reg或或integer型型 在生成组合逻辑的在生成组合逻辑的always块中被赋值的所有信号必须块中被赋值的所有信号必须都在都在always (敏感信号表敏感信号表) 的敏感电平列表
2、中列出的敏感电平列表中列出 2021-10-151.1.编码器和译码器编码器和译码器 v例例3-56:BCD码将十进制的数字转化为二进制码将十进制的数字转化为二进制 module bin2bcd (data_in ,EN ,data_out );input 3:0 data_in ;input EN ; output 6:0 data_out ;reg 6:0 data_out ;always (data_in or EN ) begin data_out = 71b0; if (EN = 1) begin case (data_in) /根据共阳接法译码根据共阳接法译码 4b0000 : d
3、ata_out 6:0 = 7b1000000; 4b0001 : data_out 6:0 = 7b1111001; 4b0010 : data_out 6:0 = 7b0100100; 4b0011 : data_out 6:0 = 7b0110000; 4b0100 : data_out 6:0 = 7b0011001; 4b0101 : data_out 6:0 = 7b0010010; 4b0110 : data_out 6:0 = 7b0000010; 4b0111 : data_out 6:0 = 7b1111000; 4b1000 : data_out 6:0 = 7b0000
4、000; 4b1001 : data_out 6:0 = 7b0011000; default : data_out 6:0 = 71b0; endcase endendendmodule数据选择器数据选择器 v例3-57:设计一个数据选择器,实现在选择信号SEL,使能信号EN的控制下,从输入信号IN0,IN1,IN2,IN3中选择一个赋值到输出端口OUT。 define width 8module mux(EN ,IN0 ,IN1 ,IN2 ,IN3 ,SEL ,OUT );input EN ;input width-1:0 IN0 ,IN1 ,IN2 ,IN3 ;input 1:0 SEL
5、 ;output width-1:0 OUT ;reg width-1:0 OUT ;always (SEL or EN or IN0 or IN1 or IN2 or IN3 )begin if (EN=0) OUT = 81b0; elsecase (SEL ) 2b00: OUT=IN0 ; 2b01: OUT=IN1 ; 2b10: OUT=IN2 ; 2b11 : OUT=IN3 ; default : OUT=81b0;endcase endendmodulewirewidth-1 :0 OUT;assign OUT= (EN=0)?8b0 :(SEL=2b00) ? IN0 :(
6、SEL=2b01) ? IN1 :(SEL=2b10) ? IN2 :(SEL=2b11) ? IN3 : 8b0;3. 3. 数值比较器数值比较器例例3-58:设计比较器电路,实现两个多位数:设计比较器电路,实现两个多位数的比较,并将结果显示如下:的比较,并将结果显示如下:当当ab 置置a_great为为1,其余输出端为,其余输出端为0当当a=b 置置a_equle_b为为1,其余输出端为,其余输出端为0当当a b) a_great = 1;else a_great = 0; if(a = b) a_equel_b = 1; else a_equel_b = 0; if(a b) b_gre
7、at = 1; else b_great = 0; endendmodule 3.5.2 3.5.2 时序电路设计时序电路设计v1. 移位寄存器移位寄存器v当寄存器存储的代码能够在移位脉冲的作用下依当寄存器存储的代码能够在移位脉冲的作用下依次左移或右移,就构成了移位寄存器。次左移或右移,就构成了移位寄存器。v移位寄存器不仅可以存储代码,而且可以用来实移位寄存器不仅可以存储代码,而且可以用来实现数据的串行并行的转换,数值的运算以及数现数据的串行并行的转换,数值的运算以及数据的处理等据的处理等 v例例3-59:设计边沿触发结构的:设计边沿触发结构的D触发器组成的触发器组成的4位位移位寄存器移位寄存
8、器module shift_flop(D,CLK,Q);input D;input CLK;output 3:0 Q;reg 3:0 Q;always (posedge clk) begin Q3 = D;Q2 = Q3;Q1 = Q2;Q0 = Q1;endendmodule2. 2. 计数器计数器v例3-60:设计一个带异步复位的十六进制计数器module counter_16(clk,reset,counter_data);input clk,reset;output 3:0 counter_data;reg 3:0 counter_data;always (posedge clk or
9、 posedge reset); if(reset=1) counter_data = 4b0000; else counter_data = counter_data + 1; endmodule3. 3. 分频器分频器v例例3-61:设有一个:设有一个50MHz的时钟源,设计分频电的时钟源,设计分频电路得到秒脉冲时钟信号。路得到秒脉冲时钟信号。module divider50m(inclk,outclk);input inclk;output outclk;reg outclk;reg 25:0 counter;always ( posedge inclk )beginif ( count
10、 = 49999999 )count = 0;else count = count + 1; endalways ( count )beginif ( count = 49999999 )outclk = 1;else outclk = 0; endendmodule在Verilog HDL 中使用函数vVeirlog HDL 也可使用函数以适应对不同变量采取同一运算的操作。vVeirlog HDL 函数在综合时被理解成具有独立运算功能的电路,每调用一次函数相当于改变这部分电路的输入以得到相应的计算结果module tryfunct(clk,n,result,reset);output31:0
11、 result;input3:0 n;input reset,clk;reg31:0 result;always (posedge clk)beginif(!reset)result=0;elsebeginresult = factorial(n);endendfunction 31:0 factorial; input 3:0 operand;integer index;beginfactorial = operand ? 1 : 0;for(index = 2; index = operand; index = index + 1)factorial = index * factorial
12、;endendfunctionendmodule函数factorial(n) 实现了:阶乘运算v在实际的设计中,不希望设计中的运算过于复杂,以免在综合后带来不可预测的后果。v经常的情况是,把复杂的运算分成几个步骤,分别在不同的时钟周期完成。在Verilog HDL 中使用任务(task)v当希望能够将一些信号进行运算并输出多个结果时,任务结构在这方面的优势则十分突出。v任务本身并不返回计算值,但是它通过类似C 语言中形参与实参的数据交换,非常快捷地实现运算结果的调用。v可以常常利用任务来帮助实现结构化的模块设计,将批量的操作以任务的形式独立出来,这样设计的目的通常一眼看过去就很明了。3.5.3
13、 3.5.3 数字系统设计数字系统设计v有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态,究竟转向哪一状态还是留在原状态与各个输入值,当前所在状态有关。v在Verilog HDL中可以用许多种方法来描述有限状态机,最常用的方法是用always语句和case语句。v常用的编码方式有以下几种:二进制顺序编码、格雷码、随机码、一位有效(one-hot)编码等 v有限状态机根据其输出的逻辑关系可分为两类,当时序逻辑的输出是输入信号和当前状态的函数,且当前状态和输入信号决定了下一状态,
14、称为Mealy状态机;当系统的输出只是当前状态的函数,称为Moore状态机。 vMealy状态机结构图 例3-62: Mealy型状态reg 1:0 state , next_state;always (posedge clk) if(reset) state =idle; elsestate = next_state;always (state or in1 or in2)begincase (state)2d0: beginout = in1 & in2;/ 输出if (in1) next_state = 1;/ 下一状态确定else next_state = 2;end2d1: begi
15、nout = in2;if (in2) next_state = 2;else next_state = 3;endendcaseendv Moore状态机结构图 例例3-63:Moore型状态机型状态机always (posedge clk)beginstate = next_state;case (state)2d0: beginout = 1;/ 输出输出if (in1) next_state = 1; / 下一状态确定下一状态确定else next_state = 2;end2d1: beginif (in2) next_state = 0;else next_state = 3;en
16、dendcaseend 思考:思考:module fsm (Clock, Reset, A, F, G);input Clock, Reset, A;output F,G;reg F,G;reg 1:0 state ;parameter Idle = 2b00, Start = 2b01,Stop = 2b10, Clear = 2b11;always (posedge Clock)if (!Reset)beginstate = Idle; F=0; G=0;endelsecase (state)idle: begin if (A) begin state = Start; G=0; end
17、else state = idle; endstart: if (!A) state = Stop; else state = start;Stop: begin if (A) begin state = Clear; F = 1; endelse state = Stop; endClear: begin if (!A) begin state =Idle; F=0; G=1; end else state = Clear; endendcaseendmodule还可以写成:还可以写成:module fsm (Clock, Reset, A, F, G);input Clock, Reset
18、, A;output F,G;reg 1:0 state ;wire 1:0 Nextstate;parameter Idle = 2b00, Start = 2b01,Stop = 2b10, Clear = 2b11;always (posedge Clock)if (!Reset)beginstate = Idle;endelsestate = Nextstate;assign Nextstate = ( state = Idle ) ? ( A ? Start : Idle ) : ( state=Start ) ? ( !A ? Stop : Start ) : ( state= Stop ) ? ( A ? Clear : Stop ) : ( state= Clear) ? ( !A ? Idle : Clear) : Idle;assign F = ( state = Stop) & A );assign G = ( state = Clear) & (!A | !Reset);endmodulev课堂练习 设计一个状态机实现在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年血管外科规培理论考试试卷(含答案)
- 重要物资保护应急演练脚本
- 自动化仪表施工方案
- 2026北京大学环境科学与工程学院教学科研岗位招聘农业考试模拟试题及答案解析
- 2026湖北教师招聘统考通山县教师招聘68人农业笔试备考题库及答案解析
- 2026河南资产管理有限公司“金才计划”管培生招聘10人农业考试模拟试题及答案解析
- 2026年哈尔滨理工大学公开招聘专职辅导员、少数民族专职辅导员和军事理论教师21人农业笔试备考试题及答案解析
- 2026吉林大学白求恩第一医院干部病房超声科招聘农业笔试参考题库及答案解析
- 2026年滨州市卫生健康系统医疗卫生机构急需紧缺专业人才“一站式”校园招聘433人(山东医药大学站)农业笔试参考题库及答案解析
- 2026浙江绍兴市镜湖开发集团有限公司招聘2人农业考试模拟试题及答案解析
- 胸腔镜肺楔形切除术
- 2022年山东出版集团有限公司招聘考试真题
- 毛泽东诗词鉴赏
- 北航学术报告总结
- GB/T 28894-2012表面化学分析分析前样品的处理
- 病媒生物消杀防制工作实施方案
- GB 4806.1-2016食品安全国家标准食品接触材料及制品通用安全要求
- 现代科技发展概论
- 2022年德州银行校园招聘笔试试题及答案解析
- 何谓俗世奇人整本书导读课件
- 药膳师理论考试题库及答案
评论
0/150
提交评论