第9章Verilog数字电路设计_第1页
第9章Verilog数字电路设计_第2页
第9章Verilog数字电路设计_第3页
第9章Verilog数字电路设计_第4页
第9章Verilog数字电路设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9章章 Verilog数字电路设计数字电路设计 级连加法器级连加法器 并行加法器并行加法器 超前进位加法器超前进位加法器 流水线加法器流水线加法器(1)8位级连加法器位级连加法器module add_jl(sum,cout,a,b,cin);input7:0 a,b;input cin;output7:0 sum;output cout;full_add1 f0(a0,b0,cin,sum0,cin1); full_add1 f1(a1,b1,cin1,sum1,cin2);full_add1 f2(a2,b2,cin2,sum2,cin3);full_add1 f3(a3,b3,cin3

2、,sum3,cin4);full_add1 f4(a4,b4,cin4,sum4,cin5);full_add1 f5(a5,b5,cin5,sum5,cin6);full_add1 f6(a6,b6,cin6,sum6,cin7);full_add1 f7(a7,b7,cin7,sum7,cout);endmodule8 8位级连加法器代码位级连加法器代码(2 2)并行加法器)并行加法器 module add_bx(cout,sum,a,b,cin);input7:0 a,b; input cin;output7:0 sum; output cout;assign cout,sum=a+b+

3、cin;endmodule全部由逻辑门实现全部由逻辑门实现(3 3) 8 8位超前进位加法器位超前进位加法器 module add_ahead(sum,cout,a,b,cin);input7:0 a,b;input cin;output7:0 sum;output cout;wire7:0 G,P;wire7:0 C,sum;assign G0=a0&b0; assign P0=a0|b0;assign C0=cin;assign sum0=G0P0C0;assign G1=a1&b1; assign P1=a1|b1;assign C1=G0|(P0&cin);as

4、sign sum1=G1P1C1;assign G2=a2&b2; assign P2=a2|b2;assign C2=G1|(P1&C1);assign sum2=G2P2C2;assign G3=a3&b3;assign P3=a3|b3;assign C3=G2|(P2&C2);assign sum3=G3P3C3;assign G4=a4&b4;assign P4=a4|b4;assign C4=G3|(P3&C3);assign sum4=G2P2C2;assign G5=a5&b5; assign P5=a5|b5;assig

5、n C5=G4|(P4&C4);assign sum5=G5P5C5;assign G6=a6&b6;assign P6=a6|b6;assign C6=G5|(P5&C5);assign sum6=G6P6C6;assign G7=a7&b7; assign P7=a7|b7;assign C7=G6|(P6&C6);assign sum7=G7P7C7;assign cout=G7|(P7&C7); endmodule(4 4)流水线加法器)流水线加法器 module adder8(cout,sum,a,b,cin,enable);input

6、7:0 a,b;input cin,enable;output7:0 sum;output cout;reg cout;reg7:0 sum;reg3:0 tempa,tempb,firsts;reg firstc;always (posedge enable)beginfirstc,firsts=a3:0+b3:0+cin;tempa=a7:4; tempb=b7:4;endalways (posedge enable)begincout,sum7:4=tempa+tempb+firstc;sum3:0=firsts;endendmodule 并行乘法器并行乘法器 移位相加移位相加 查找表查

7、找表 加法树加法树module mult(outcome,a,b);parameter size=8;inputsize:1 a,b;output2*size:1 outcome;assign outcome=a*b;endmodule(1 1)并行乘法器)并行乘法器利用利用Verilog语言的乘法操作符,可很容语言的乘法操作符,可很容易地实现并行乘法器,并可由易地实现并行乘法器,并可由EDA综合软综合软件自动转化为电路网表结构件自动转化为电路网表结构n88并行乘法器的门级综合原理图 (2)移位相加乘法器)移位相加乘法器n移位相加乘法器将乘移位相加乘法器将乘法变为加法实现,其法变为加法实现,其

8、设计思路是:乘法通设计思路是:乘法通过逐次移位相加实现,过逐次移位相加实现,每次判断乘数的最低每次判断乘数的最低位,若为位,若为1则将被乘数则将被乘数移位相加。移位相加。44移位相加乘法操作示意图移位相加乘法操作示意图(3)加法树乘法器 加法树乘法器示意图加法树乘法器示意图 (4)查找表乘法器)查找表乘法器n查找表乘法器将乘积直接存放在存储器中,将操作查找表乘法器将乘积直接存放在存储器中,将操作数(乘数和被乘数)作为地址访问存储器,得到的数(乘数和被乘数)作为地址访问存储器,得到的输出数据就是乘法运算的结果。输出数据就是乘法运算的结果。n查找表方式的乘法器速度只局限于所使用存储器的查找表方式的

9、乘法器速度只局限于所使用存储器的存取速度。但由于查找表规模随操作数位数增加而存取速度。但由于查找表规模随操作数位数增加而迅速增大,因此如用于实现位数宽的乘法操作,需迅速增大,因此如用于实现位数宽的乘法操作,需要要FPGA器件具有较大的片内存储器模块。比如,器件具有较大的片内存储器模块。比如,要实现要实现88乘法,要求存储器的地址位宽为乘法,要求存储器的地址位宽为16位,位,字长为字长为16位,即存储器大小为位,即存储器大小为1M比特。比特。n乘累加器的结构框图 乘累加器(乘累加器(MAC)module MAC(out,opa,opb,clk,clr);output15:0 out;input7

10、:0 opa,opb;input clk,clr; wire15:0 sum; reg15:0 out; function15:0 mult; /函数定义,函数定义,mult函数完成乘法操作函数完成乘法操作input7:0 opa,opb; reg 15:0 result; integer i;beginresult=opa0? opb : 0;for(i=1; i=7; i=i+1)begin if(opai=1) result=result+(opb(i-1);endmult=result;endendfunction assign sum=mult(opa,opb)+out;always

11、 (posedge clk or posedge clr)begin if(clr) out=0; else out=sum; end endmodulen在实际中我们经常会遇到这样的问题,在实际中我们经常会遇到这样的问题,需要进行奇数次分频,同时又要得到占需要进行奇数次分频,同时又要得到占空比是空比是50%的方波波形。的方波波形。n可采用如下方法:用两个计数器,一个可采用如下方法:用两个计数器,一个由输入时钟上升沿触发,一个由输入时由输入时钟上升沿触发,一个由输入时钟下降沿触发,最后将两个计数器的输钟下降沿触发,最后将两个计数器的输出相或,即可得到占空比为出相或,即可得到占空比为50%的方波

12、的方波波形。波形。 9.4 奇数分频与小数分频奇数分频与小数分频 (1)奇数分频)奇数分频占空比占空比50%的奇数分频(模的奇数分频(模7) module count7(RESET,CLK,COUT);input CLK,RESET; output COUT;reg2:0 m,n;wire COUT; reg COUT1,COUT2;assign COUT=COUT1|COUT2;always (posedge CLK)beginif(!RESET) begin COUT1=0; m=0; endelse if(RESET)begin if(m=6) begin m=0; endelse m=

13、m+1;if(m=2) COUT1=COUT1;else if(m=5) COUT1=COUT1;endend占空比占空比50%的奇数分频(模的奇数分频(模7)always (negedge CLK)beginif(!RESET) begin COUT2=0; n=0; endelse if(RESET)begin if(n=6) begin n=0; endelse n=n+1;if(n=2) COUT2=COUT2; else if(n=5) COUT2=COUT2;endendendmodule功能仿真波形功能仿真波形模模7奇数分频器功能仿真波形图奇数分频器功能仿真波形图 (2)小数分频

14、)小数分频 n可用下面的方法大致实现小数分频,即可用下面的方法大致实现小数分频,即先设计两个不同分频比的整数分频器,先设计两个不同分频比的整数分频器,然后通过控制两种分频比出现的不同次然后通过控制两种分频比出现的不同次数来获得所需要的小数分频值,从而实数来获得所需要的小数分频值,从而实现平均意义上的小数分频。现平均意义上的小数分频。 8.1小数分频器小数分频器module fdiv8_1(clk_in,rst,clk_out);input clk_in,rst;output clk_out;reg clk_out;reg3:0 cnt1;/cnt1计分频的次数计分频的次数reg3:0 cnt2

15、;always(posedge clk_in or posedge rst)begin if(rst) begin cnt1=0; cnt2=0; clk_out=0; end else if(cnt19)/9次次8分频分频 begin if(cnt27) begin cnt2=cnt2+1; clk_out=0; end else begin cnt2=0; cnt1=cnt1+1; clk_out=1; end end else begin/1次9分频 if(cnt28) begin cnt2=cnt2+1; clk_out=0; end else begin cnt2=0; cnt1=0

16、; clk_out=1; end endendendmodule8.1小数分频功能仿真波形小数分频功能仿真波形 功能仿真波形功能仿真波形 9.5 数字跑表数字跑表 n设计一个数字跑表,设计一个数字跑表,该跑表具有复位、该跑表具有复位、暂停、秒表计时等暂停、秒表计时等功能。功能。n 跑表设三个输入端,分别为时钟输入跑表设三个输入端,分别为时钟输入(CLK)、复位()、复位(CLR)和启动)和启动/暂停暂停(PAUSE)按键。复位信号高电平有效,可对)按键。复位信号高电平有效,可对跑表异步清零;当启动跑表异步清零;当启动/暂停键为低电平时跑暂停键为低电平时跑表开始计时,为高电平时暂停,变低后在原来

17、表开始计时,为高电平时暂停,变低后在原来的数值基础上继续计数。的数值基础上继续计数。 9.6 数字频率计数字频率计 n设计一个设计一个4位频率计,可测量从位频率计,可测量从1Hz到到9,999Hz的信号频率,并将被测信号的频的信号频率,并将被测信号的频率在率在4个数码管上显示出来。个数码管上显示出来。n采用一个标准的基准时钟,在单位时间采用一个标准的基准时钟,在单位时间(如(如1秒)里对被测信号的脉冲数进行计数,秒)里对被测信号的脉冲数进行计数,即为信号的频率。即为信号的频率。4位数字频率计的框图位数字频率计的框图 9.7 交通灯控制器交通灯控制器 n设计一个十字路口交通灯控制器,其示设计一个

18、十字路口交通灯控制器,其示意图如图所示,意图如图所示,A方向和方向和B方向各设红方向各设红(R)、黄()、黄(Y)、绿()、绿(G)和左拐()和左拐(L)四盏灯,四种灯按合理的顺序亮灭,并四盏灯,四种灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出能将灯亮的时间以倒计时的形式显示出来。来。A方向B方向R1 Y1 G1 L1R2Y2G2L2 9.8 乐曲演奏电路乐曲演奏电路n采用FPGA器件驱动小扬声器构成一个乐曲演奏电路,演奏的乐曲选择“梁祝”片段,其曲谱如下。 3562155216 13 56 523651326516 16 57 乐曲演奏的原理n组成乐曲的每个音符的频率值(音调)及

19、其组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,器的激励信号的频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。就可以使扬声器发出连续的乐曲声。 乐曲演奏电路原理框图乐曲演奏电路原理框图 9.10 实用多功能数字钟实用多功能数字钟 n用用Verilog语言设计一个多功能数字钟,数字钟具语言设计一个多功能数字钟,数字钟具有下述功能有下述功能(1)计时功能:包括时、分、秒的计时。)计时功能:包括时、分、秒的计时。(2)定时与闹钟功能:能在设定的时间发出闹铃音。)定时与闹钟功能:能在设定的时间发出闹铃音。(3)校时功能:对小时、分钟和秒能手动调整以校)校时功能:对小时、分钟和秒能手动调整以校准时间。准时间。(4)整点报时功能:每逢整点,产生)整点报时功能:每逢整点,产生“嘀嘀嘀嘀嘀嘀嘀嘀嘟嘟”,四短一长的报时音。,四短一长的报时音。9-1 用状态机设计一个带同步复位的十进制计数器,用状态机设计一个带同步复位的十进制计数器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论