波形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

justhost:“第4次VPS测评”,8.3元/月,200M带宽,不限流量,KVM虚拟,4个俄罗斯机房应有适合你的

justhost.ru官方来消息说已经对网络进行了比较全面的优化,针对中国电信、联通、移动来说,4个机房总有一个适合中国用户,让站长进行一下测试,这不就有了这篇有关justhost的VPS的第四次测评。本帖主要关注的是网络,对于其他的参数一概不管! 官方网站:https://justhost.ru 最低配VPS:8.3元/月,KVM,512M内存,5G硬盘,200M带宽,不限流量 购买链接:...

蓝竹云挂机宝25元/年,美国西雅图 1核1G 100M 20元

蓝竹云怎么样 蓝竹云好不好蓝竹云是新商家这次给我们带来的 挂机宝25元/年 美国西雅图云服务器 下面是套餐和评测,废话不说直接开干~~蓝竹云官网链接点击打开官网江西上饶挂机宝宿主机配置 2*E5 2696V2 384G 8*1500G SAS RAID10阵列支持Windows sever 2008,Windows sever 2012,Centos 7.6,Debian 10.3,Ubuntu1...

华纳云不限流量¥324/年,香港双向CN2(GIA)云服务器/1核1G/50G存储/2Mbps

华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供香港和美国机房的VPS云服务器和独立服务器。商家支持支付宝、网银、Paypal付款。华纳云主要面向国内用户群,所以线路质量还是不错的,客户使用体验总体反响还是比较好...

计数器代码为你推荐
phpwindphpwind怎么用?免费么?请详细说明http500http 550错误iprouteip route 0.0.0.0 0.0.0.0 s0/0/0 中s0/0/0 指的是本地的还是??ym.163.com网易163企业邮箱的foxmail怎样设置?美要求解锁iPhoneiphone美版解锁硬解大概需要多少钱啊flashftp下载rmdown怎么下载netshwinsockreset在cmd中输入netsh winsock reset显示系统找不到指定文件怎么办支持http瞄准的拼音碰的拼音是什么青岛网通测速中国联通宽带,青岛地区咋样,与网通有啥区别
上海虚拟主机 长沙域名注册 二级域名查询 域名服务器的作用 备案域名出售 优key 12306抢票攻略 512au 国外代理服务器软件 tna官网 国外视频网站有哪些 贵阳电信测速 阿里云邮箱申请 免备案cdn加速 云销售系统 nnt websitepanel windowsserver2008r2 ncp是什么 美国代理服务器 更多