verilog串并转换并串转换

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.设计名称:38译码器带使能端的主要功能:实现38译码功能,并且在使能段处于低电平是输出为00000000设计框图:设计代码:moduledecoder3_8(a,b,ena);input[2:0]a;inputena;output[7:0]b;reg[7:0]b;always@(ena,a)if(!ena)beginb=8'b00000000;endelsebegincase(a)3'b000:b=8'b00000001;3'b001:b=8'b00000010;3'b010:b=8'b00000100;3'b011:b=8'b00001000;3'b100:b=8'b00010000;3'b101:b=8'b00100000;3'b110:b=8'b01000000;3'b111:b=8'b10000000;default:b=8'b00000000;endcaseendendmodule仿真代码:`timescale1ns/1nsmoduletb;reg[2:0]a;regena;wire[7:0]b;initialbegina=3'b000;ena=1'b0;#50;ena=1'b1;#50;a=3'b001;#50;a=3'b010;#50;a=3'b011;#50;a=3'b100;#50;a=3'b101;#50;a=3'b110;#50;a=3'b111;#50;$stop;enddecoder3_8udecoder3_8(.a(a),.ena(ena),.b(b));endmodule仿真结果:辅助说明:当ena为低电平时,无论a为何值,总是输出00000000,当ena为高电平时,输出即随a的数值变化而变化,当a为001时,b的值变为00000010;当a为010时,b的值变为00000100,这与设计时的功能是一致的。_______________________________________________________________________________2.设计名称:83编码器带使能端的和优先级主要功能:实现83编码功能,并且在使能段处于低电平是输出为000,同时最高位的优先级最高设计框图:设计代码:moduleundecoder8_3(a,b,ena);input[7:0]a;inputena;output[3:0]b;reg[3:0]b;always@(ena,a)if(!ena)beginb=3'b000;endelseif(a[7])b=3'b111;elseif(a[6])b=3'b110;elseif(a[5])b=3'b101;elseif(a[4])b=3'b100;elseif(a[3])b=3'b011;elseif(a[2])b=3'b010;elseif(a[1])b=3'b001;elseif(a[0])b=3'b000;elseb=3'b000;endmodule仿真代码:moduletb;reg[7:0]a;regena;wire[2:0]b;initialbegina=8'b10000000;ena=1'b0;#50;ena=1'b1;#50;a=8'b01000000;#50;a=8'b00100000;#50;a=8'b00010000;#50;a=8'b00001000;#50;a=8'b00000010;#50;a=8'b00000001;#50;a=8'b10100000;#50;$stop;endundecoder8_3unit1_undecoder8_3(.a(a),.ena(ena),.b(b));endmodule仿真结果:辅助说明:当ena为低电平时,无论a为何值,总是输出000,当ena为高电平时,输出即随a的数值变化而变化,当a为01000000时,b为110,当a为00100000是,b为101以此类推,同时最后一个波形为,当a为10100000时,b为111,体现了优先译码的功能,此结果和当初设计的功能一致的。_______________________________________________________________________________3.设计名称:设计一个1:1的3分频器主要功能:实现3分频,同时高低电平比为1:1设计框图:设计代码:这个设计可以利用模三计数器分别在时钟的上升和下降沿设计一个高低电平为1:2的3分频,然后将两个波形相或即能得到结果。代码一:moduleDevider2_1(//inputsclk,rst_n,//outputsopt1,opt2,opt);inputclk;inputrst_n;outputopt;outputopt1;outputopt2;regopt1;reg[1:0]temp1;regopt2;reg[1:0]temp2;always@(posedgeclk)beginif(!rst_n)begintemp1=2'd0;opt1=1'b0;endelseif(temp1==1)beginopt1=1'b1;temp1=temp1+2'd1;endelseif(temp1==2'd2)beginopt1=1'b0;temp1=2'd0;endelsebegintemp1=temp1+2'd1;endendalways@(negedgeclk)beginif(!rst_n)begintemp2=2'd0;opt2=1'b0;endelseif(temp2==1)beginopt2=1'b1;temp2=temp2+2'd1;endelseif(temp2==2'd2)beginopt2=1'b0;temp2=2'd0;endelsebegintemp2=temp2+2'd1;endendassignopt=opt1||opt2;endmodule同时也可以用同样的方法设计一个在上升和下降沿高低电平2:1的3分频器,将两个波形相与即可。代码二:moduleDevider2_1(//inputsclk,rst_n,//outputsopt1,opt2,opt);inputclk;inputrst_n;outputopt;outputopt1;outputopt2;regopt1;regopt2;reg[1:0]temp1;reg[1:0]temp2;always@(posedgeclk)beginif(!rst_n)begintemp1=2'd0;opt1=1'b0;end//resetelseif(temp1==2'd0)beginopt1=1'b1;temp1=temp1+2'd1;endelseif(temp1==2'd1)beginopt1=1'b1;temp1=temp1+2'd1;endelseif(temp1==2'd2)beginopt1=1'b0;temp1=2'd0;endendalways@(negedgeclk)beginif(!rst_n)begintemp2=2'd0;opt2=1'b0;end//resetelseif(temp2==2'd0)beginopt2=1'b1;temp2=temp2+2'd1;endelseif(temp2==2'd1)beginopt2=1'b1;temp2=temp2+2'd1;endelseif(temp2==2'd2)beginopt2=1'b0;temp2=2'd0;endendassignopt=opt1&&opt2;endmodule仿真代码:上面两个代码的仿真代码是一样的。`timescale1ns/1nsmoduletb;//inputsregclk;regrst_n;//outputswireopt1;wireopt2;wireopt;//generateclkalways#10clk=~clk;//tbstartsInitialbeginclk=1'b0;rst_n=1'b0;#100;rst_n=1'b1;#500;$stop;end//InstantDUTDevider2_1uDevider2_1(//inputs.clk(clk),.rst_n(rst_n),//outputs.opt1(opt1),.opt2(opt2),.opt(opt));endmodule仿真结果:(a)高低电平为1:2设计的(b)高低电平为2:1设计的辅助说明:(a)中opt1为上升沿触发的高低电平1:2的3分频,opt2为下降沿触发的高低电平为1:2的3分频,可以看出在rst_n为0进行清复位,之后在rst_n为1是进行分频,最后所得opt结果为1:1的3分频,符合设计要求。(b)中opt1为上升沿触发的高低电平2:1的3分频,opt2为下降沿触发的高低电平为2:1的3分频,可以看出在rst_n为0进行清复位,之后在rst_n为1是进行分频,最后所得opt结果为1:1的3分频,符合设计要求。_______________________________________________________________________________4.设计名称:七人表决器主要功能:7个人进行表决,人数过4则LED灯亮,否则灯灭设计框图:设计代码:modulev(vote,rst,Q);input[6:0]vote;inputrst;outputQ;regQ;reg[2:0]c;always@(voteorrst)beginc=0;if(rst)c=3'b000;elsebeginc=c+vote[0];c=c+vote[1];c=c+vote[2];c=c+vote[3];c=c+vote[4];c=c+vote[5];c=c+vote[6];endif(c3)Q=1;elseQ=0;endendmodule仿真代码:`timescale1ns/1nsmoduleq;regrst;reg[6:0]vote;wireQ;initialbeginrst=0;vote=7'b111111;#50;rst=1;#50;rst=0;#50;vote=7'b0110101;#50;vote=7'b0100101;#50;vote=7'b0111101;#50;vote=7'b1111001;#50;vote=7'b0100001;#50;vote=7'b0000001;#50;$stop;endvv_unit(.vote(vote),.rst(rst),.Q(Q));endmodule仿真结果:辅助说明:第一个表决为0111111,有6人同意,于是显示通过,Q为高电平,第二个单位是,rst复位信号显示为1,此时对表决器复位,于是Q清0,后面当rst为低电平时又可以开始表决,当最后一个表决信号只有1个人同意时,由于人数少于4,所以Q为0,不通过,结果与设计相仿。_______________________________________________________________________________5设计名称:十进制计数器的设计主要功能:使能端为高电平且复位信号为低电平是,进行模十同步计数,同时满10的时候清0并且进位co置1,在一个始终后默认高位已经接受完进位信号将其清0。使能端为低电平时计数器保持输出不变,当使能端为高电平,且复位信号为高电平时,将计数器异步清0.设计框图:设计代码:moduleten(clk,rst_tong,rst_yi,a,co,ena);inputclk;inputrst_tong;inputrst_yi;inputena;output[3:0]a;outputco;reg[3:0]a;regco;always@(posedgeclkorposedgerst_yi)beginco=0;if(rst_yi)begina=4'b0000;co=0;endif(!ena)beginco=0

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功