波形Verilog代码(计数器、交通灯、串并转换)

计数器代码  时间:2021-03-19  阅读:()

1、通用二进制计数器

设计一个二进制计数器默认为8位计数器具有加/减计数功能、异步复位、预制数功能。

代码如下

`defin eWIDTH 8modul eBinar yCoun ter(count er,clk,up_do wn,load,reset ,din);outpu treg[`WIDTH-1:0]count er;input clk;input up_do wn; //1为加计数 0为减计数input reset ;input load; //预置数 1有效 din输出到coun terinp ut [`WIDTH-1:0]din;alway s@(posed ge clk or posed ge reset )beginif(reset )count er<=0;else if(load)count er<=din;else if(up_do wn==1)count er<=count er+1;else if(up_do wn==0)begincount er<=count er-1;if(count er<1)count er<=0;endendendmo dule

测试程序如下

`defin eWIDTH 8modul eBinar yCoun ter_t b;reg clk,up_do wn,reset ,load;reg[`W ID TH-1:0]din;wire [`WIDTH-1:0]count er;integ er i;initi albeginclk=0;reset=1;

#5 reset=0;

#3000$s to p;end

alway s#5 clk=~clk;

/*alway s@(posed ge clk)beginup_do wn={$rando m}%2;lo ad={$rando m}%2;din={$rando m}%256;end

*/initi albegin

#5;for(i=0;i<256;i=i+3)begindin=i;

#10;endendiniti albeginup_do wn=1;lo ad=1;

#20 load=0;

#30 load=1;

#30 load=0;endalway s#200 up_do wn=~up_do wn;

Binar yCoun ter bcoun ter(.count er(count er),

.clk(clk),.up_do wn(up_do wn),.load(load),.reset (reset ),.din(din));endmo dule

波形图如下

图1二进制计数器波形图

图2二进制计数器波形图

从图像可看出 20s-50s为加计数 50s-80s时l oad=1执行置数功能 80s-200s时up_do wn=1,为加计数 200s-280s时up_do wn=0为减计数。

2、格雷码计数器

代码如下

`defin eWIDTH 4modul eGrayC ounte r(gray,clk,rst_n);outpu t[`WIDTH-1:0]gray;input clk;input rst_n;reg[`WIDTH-1:0]binar y;alway s@(posed ge clk or neged ge rst_n)beginif(!rst_n)binar y<=0;else if(binar y<16)beginbinar y<=binar y+1;

//binar y<=(binar y<16)?binar y:0;endelsebinar y<=0;endassig ngray[0]=binar y[0]^binar y[1];assig ngray[1]=binar y[1]^binar y[2];assig ngray[2]=binar y[2]^binar y[3];assig ngray[3]=binar y[3];endmo dule

测试程序如下

`defin eWIDTH 4modul eGrayC ounte r_tb;w ire [`W ID TH-1:0]gra y;reg clk;reg rst_n;initi albeginclk=0;rst_n=0;

#10 rst_n=1;

#1000$s to p;endalway s#5 clk=~clk;

/*alway s@(posed ge clk)beginend

*/

GrayC ounte rgc(.gray(gray),.clk(clk),.rst_n(rst_n));endmo dule

波形图如下

图3格雷码计数器波形图二进制数值

图3格雷码计数器波形图十进制数值

3、完成一个串并转换电路(8位)的Veri log代码设计。代码如下modul etrans form_cb(sclk,pclk,rst,ser_d in,enabl e,p_dou t);input sclk;input pclk;input rst;input enabl e;input ser_din;outpu t[7:0]p_dou t;reg[7:0] te mp,po ut_buf;re g[2:0]c o unt ;

//integ er i;alway s@(posed ge sclk or neged ge rst)beginif(!rst)beginc o unt<=0;te mp<=0;endelse if(count<=3'b111)beginc o unt<=co unt+1;temp[0]<=ser_d in;te mp<=te mp<<1;temp[7:0]<={temp[6:0],ser_d in};endend

alway s@(posed ge pclk or neged ge rst)beginif(!rst)pout_buf<=0;elsepout_buf<=temp;endassig np_dou t=(enabl e)?pout_buf:8'bz;endmo dule

测试程序如下modul etrans form_cb_tb;reg sclk;reg p c lk;reg rst;reg enabl e;reg ser_d in;wire [7:0]p_dou t;initi albeginsclk=0;pclk=0;rst=0;enabl e=0;

#15 rst=1;enabl e=1;

#15 enabl e=0;

#20 enabl e=1;

#50 enabl e=0;

#50 enabl e=1;

#1000$s to p;endalway s#5 sclk=~sclk;alway s#40 pclk=~pclk;alway s@(posed ge sclk)ser_d in={$rando m}%2;trans form_ cb ps(.sclk(sclk),.pclk(pclk),.rst(rst),.ser_d in(ser_d in),.enabl e(enable),.p_dou t(p_dou t));endmo dule

波形图如下

图5 8位串并转换电路波形图

图6 8位串并转换电路波形图

图7 8位串并转换电路波形图

图8 8位串并转换电路波形图

从图中可以看出 0-15s、 30s-50s时e nable无效输出为三态 15s-30s、 50s-100s时enabl e有效输出8位并行数据在200s 、280s、 360s可以看出每到pcl k上升沿 同步输出一个并行8位数据。

4、设计交通灯控制器有限状态机问题。

主干道上车很多有最高优先级默认主干道是绿灯亮支路偶尔有车有车时必须变绿灯只要维持足够的时间能让车通过即可支路上只要不再有车则支路绿灯变黄灯然后变红灯 同时主干道亮绿灯有一个传感器监视支路上是否有车 向控制器输入信号X X=1表示有车否则X=0

代码如下modul etraff ic_li ght(clock,clear,x,hwy,cntry);input clock;input clear;input x;outpu t reg[1:0] hwy; //主绿hwy=2'b00,主黄hwy=2'b01,主红hwy=2'b10;outpu t reg[1 :0] cntry; //支绿cnt ry=2'b00,支黄cnt ry=2'b01,支红cntry=2'b10;

//re g[5:0] c o unt ; //计数器reg[1 :0] state ,nexts tate;param eter hwy_g reen=2'b00,hwy_y ellow=2'b01,cntry_gree n=2'b 10,cntry_yellow=2'b 11;alway s@(posed ge clock or neged ge clear )beginif(!clear )begin

//c o unt<=0;state<=hwy_g reen;end

elsebegin

// co unt<=count+1;state<=nexts tate;endendalway s@(x or state )

//nexts tate<=hwy_g reen;case(s tate )hwy_g reen:beginhwy<=2'b00;cntry<=2'b 10;if(x)nexts tate<=hwy_y ellow;elsenexts tate<=hwy_g reen;endhwy_y ellow:beginhwy<=2'b01;cntry<=2'b 10;if(x)nexts tate<=cntry_gree n;elsenexts tate<=hwy_g reen;endcntry_gree n:beginhwy<=2'b 10;cntry<=2'b00;if(x)nexts tate<=cntry_gree n;elsenexts tate<=cntry_yell ow;endcntry_yell ow:beginhwy<=2'b 10;cntry<=2'b01;if(x)nexts tate<=cntry_gree n;elsenexts tate<=hwy_g reen;endendca seendmo dule

触碰云高性价20.8元/月,香港云服务器,美国cn2/香港cn2线路,4核4G15M仅115.2元/月起

触碰云怎么样?触碰云是一家成立于2019年的商家。触碰云主营香港/美国 VPS服务器、独立服务器以及免备案CDN。采用的是kvm虚拟构架,硬盘Raid10,Cn2线路,去程电信CN2、移动联通直连,回程三网CN2。最低1核1G带宽1M仅20.8元/月,不过这里推荐香港4核4G15M,香港cn2 gia线路云服务器,仅115.2元/月起,性价比还是不错的。点击进入:触碰云官方网站地址触碰云优惠码:优...

Virmach 3.23美元可用6个月的VPS主机

Virmach 商家算是比较久且一直在低价便宜VPS方案中玩的不亦乐乎的商家,有很多同时期的商家纷纷关闭转让,也有的转型到中高端用户。而前一段时间也有分享过一次Virmach商家推出所谓的一次性便宜VPS主机,比如很低的价格半年时间,时间到服务器也就关闭。这不今天又看到商家有提供这样的产品。这次的活动产品包括圣何塞和水牛城两个机房,为期六个月,一次性付费用完将会取消,就这么特别的产品,适合短期玩玩...

atcloud:480G超高防御VPS低至$4/月,美国/新加坡等6机房,512m内存/1核/500g硬盘/不限流量

atcloud主要提供常规cloud(VPS)和storage(大硬盘存储)系列VPS,其数据中心分布在美国(俄勒冈、弗吉尼亚)、加拿大、英国、法国、德国、新加坡,所有VPS默认提供480Gbps的超高DDoS防御+不限流量,杜绝DDoS攻击骚扰,比较适合海外建站等相关业务。ATCLOUD.NET是一家成立于2020年的海外主机商,主要提供KVM架构的VPS产品、LXC容器化产品、权威DNS智能解...

计数器代码为你推荐
centos6.5linux centos 6.5 怎么安装软件企业信息查询系统官网怎么在网上查询企业营业执照是否存在?重庆杨家坪猪肉摊主杀人昨天重庆九龙坡出了严重交通事故吗flashftp下载《蔓蔓青萝(全)》.TXT_微盘下载申请支付宝账户如何申请支付宝账户ipad代理想买个ipad,3000至4000元左右有什么好的pletecuteftp开放平台众安开放平台是干什么的?上面的众推广是什么?缤纷网五彩缤纷的黑是什么梗?123456hdAPP上面带有HD是啥意思
域名备案网站 cn域名备案 ftp空间 主机评测 directspace cve-2014-6271 linode代购 bash漏洞 申请空间 租空间 web服务器的架设 1g内存 cdn加速是什么 vip域名 联通网站 中国电信测速网站 畅行云 永久免费空间 wordpress中文主题 卡巴斯基官网下载 更多