ImageVerifierCode 换一换
格式:DOC , 页数:75 ,大小:277.04KB ,
资源ID:2645362      下载积分:16 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2645362.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(verilog实验37个程序.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

verilog实验37个程序.doc

1、verilog实验37个程序 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 75 个人收集整理 勿做商业用途 3-8 译码器 //

2、学习3 8译码器的原理, //拨码开关的 1 2 3作为输入 //本实验采用拨码开关来作为输入,LED作为状态显示 //当然如果你的学习板没有拨码开关,可以用key1 key2 key3 作为数据输入。 //视频教程适合我们21EDA电子的所有学习板 module decoder_38(out,key_in); output[7:0] out; //3 8译码器输出有8钟状态,所以要8个LED灯。 input[2:0] key_in; //(1 2 3)key1 key2 key3 作为数据输入 reg[7:0] out; always @(key_in)

3、 begin case(key_in) 3'd0: out=8’b11111110; //LED作为状态显示,低电平有效 3'd1: out=8’b11111101; 3'd2: out=8'b11111011; 3'd3: out=8'b11110111; 3'd4: out=8’b11101111; 3’d5: out=8'b11011111; 3'd6: out=8’b10111111; 3'd7: out=8'b01111111; endcase end endmodule 1位数

4、码管动态显示 //一位数码管试验 //利用分频计数器得到数码管,效果 //视频教程适合我们21EDA电子的所有学习板 module SMG_LED (clk_50M,rst,led_bit,dataout); input clk_50M,rst; //系统时钟50M输入 从12脚输入。 output [7:0] dataout; //我们这里用数码管, output led_bit; //一位数码管的位选择 reg [7:0] dataout; reg led_bit; reg [27:0] count; //分频计数器

5、 //分频计数器 always @ ( posedge clk_50M ) begin count<=count+1; //计数器自加 end always @ ( posedge clk_50M or negedge rst) begin led_bit 〈= ’b0; //是数码管的位选择处于导通状态 case ( count[27:24] ) // case ( count[27:24] )这一句希望初学者看明白, // 也是分频的关键 // 在数码管上面显示0到F 0: dataout<=8’b1100000

6、0; //0 1: dataout〈=8'b11111001; 2: dataout<=8'b10100100; 3: dataout〈=8’b10110000; 4: dataout<=8'b10011001; 5: dataout<=8'b10010010; 6: dataout〈=8’b10000010; 7: dataout<=8’b11111000; 8: dataout〈=8'b10000000; 9: dataout〈=8'b10010000; 10:dataout<=8'b10001000; 11:dat

7、aout〈=8’b10000011; 12:dataout<=8'b11000110; 13:dataout〈=8’b10100001; 14:dataout〈=8'b10000110; 15:dataout〈=8'b10001110; //f endcase end endmodule 7段数码管静态显示 //本实验就是学习单个数码管的显示 //视频教程适合我们21EDA电子的所有学习板 module SMG_LED (clk_50M,led_bit,dataout); input clk_50M ; //系统时钟

8、50M输入 从12脚输入。 output [7:0] dataout; //我们这里用数码管, output led_bit; //一位数码管的位选择 reg [7:0] dataout; reg led_bit; always @ ( posedge clk_50M ) begin led_bit 〈= 'b0; //是数码管的位选择处于导通状态 dataout<=8’b11000000; //修改7段码,可以显示不同的字符 //本实验初始是在数码管显示0 end

9、 endmodule 8位优先编码器 //学习编码器的原理 //优先编码器,拨码开关来作为输入,结果由数码管显示 module encode(a,c,en); input[8:1] a; //由键盘输入数据 output[7:0] c; //结果由数码管显示 reg[7:0] c; output[7:0] en; reg[3:0] c_tmp; integer i; assign en=0; always@(a) begin c_tmp=0; for(i=1;i〈9;i=i+1) begin if(a[i]) c_t

10、mp=i; end end always@(c_tmp) begin //下面是7段码显示的段码 case(c_tmp) 4'b0000: c=8’b11000000; //0 4'b0001: c=8'b11111001; //1 4'b0010: c=8’b10100100; 4'b0011: c=8’b10110000; 4'b0100: c=8'b10011001; 4'b0101: c=8'b10010010; 4’b0110: c=8’b10000010;

11、 4'b0111: c=8'b11111000; 4’b1000: c=8'b10000000; 4'b1001: c=8'b10010000; 4'b1010: c=8'b10001000; 4'b1011: c=8’b10000011; 4'b1100: c=8’b11000110; 4’b1101: c=8'b10100001; 4’b1110: c=8'b10000110; 4'b1111: c=8’b10001110; //f endcase end

12、 endmodule buzzer /* 向蜂鸣器发送一定频率的方波可以使蜂鸣器发出相应的音调,该实验通过设计一个状态机和分频 器使蜂鸣器发出”多来咪发梭拉西多"的音调。 */ module buzzer(clk,rst,out); input clk,rst; output out; reg out; reg[3:0] clk_div1; //基频分频计数器,基频为4M reg[12:0] clk_div2;//音阶分频计数器,由基频分频产生各个音阶 reg[21:0] cnt;//各音阶发声时间长短计数器 reg[2:0] state; pa

13、rameter duo=3822, //各个音调的分频系数 lai=3405, mi=3034, fa=2865, suo=2551, la=2273, xi=2024, duo1=1911; always@(posedge clk or negedge rst) begin if(!rst) begin clk_div1〈=0; end else begin if(clk_div1!=9) clk_div1<=clk_div1+1; else clk_div1〈=

14、0; end end always@(posedge clk or negedge rst) begin if(!rst) begin clk_div2<=0; state〈=0; cnt<=0; out〈=0; end else if(clk_div1==9) begin case(state) 3'b000: begin //发“多” cnt〈=cnt+1; if(cnt==22'h3fffff) state<=3’b001; if(clk_div2!

15、duo) clk_div2<=clk_div2+1; else begin clk_div2〈=0; out<=~out; end end 3'b001: begin //发“来” cnt<=cnt+1; if(cnt==22'h3fffff) state〈=3’b010; if(clk_div2!=lai) clk_div2〈=clk_div2+1; else begin clk_div2〈=0; out〈=~out;

16、 end end 3’b010:begin //发”米“ cnt〈=cnt+1; if(cnt==22'h3fffff) state<=3’b011; if(clk_div2!=mi) clk_div2<=clk_div2+1; else begin clk_div2〈=0; out<=~out; end end 3’b011: begin //发”法“ cnt<=cnt+1; if(cnt==2

17、2’h3fffff) state<=3’b100; if(clk_div2!=fa) clk_div2<=clk_div2+1; else begin clk_div2〈=0; out<=~out; end end 3’b100: begin //发”梭“ cnt<=cnt+1; if(cnt==22’h3fffff) state<=3’b101; if(clk_div2!=suo) clk_div2<=cl

18、k_div2+1; else begin clk_div2〈=0; out〈=~out; end end 3'b101: begin //发”拉“ cnt<=cnt+1; if(cnt==22’h3fffff) state<=3’b110; if(clk_div2!=la) clk_div2〈=clk_div2+1; else begin clk_div2<=0; out〈=~out; end

19、 end 3’b110: begin //发”西“ cnt〈=cnt+1; if(cnt==22’h3fffff) state〈=3'b111; if(clk_div2!=xi) clk_div2<=clk_div2+1; else begin clk_div2<=0; out〈=~out; end end 3’b111: begin //发”多“(高音) cnt〈=cnt+1;

20、 if(cnt==22’h3fffff) state<=3’b000; if(clk_div2!=duo1) clk_div2<=clk_div2+1; else begin clk_div2〈=0; out<=~out; end end endcase end end endmodule LCD1602_B // //本实验是用LCD1602显示英文。(LCD带字库) //视频教程适合我们21EDA电子的所有学习板 module lcd(clk, rs, rw, e

21、n,dat); input clk; //系统时钟输入50M output [7:0] dat; //LCD的8位数据口 output rs,rw,en; //LCD的控制脚 reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [4:0] current,next; reg clkr; reg [1:0] cnt; parameter set0=4’h0; parameter set1=4'h1; parameter s

22、et2=4’h2; parameter set3=4’h3; parameter dat0=4’h4; parameter dat1=4’h5; parameter dat2=4’h6; parameter dat3=4'h7; parameter dat4=4'h8; parameter dat5=4’h9; parameter dat6=4'hA; parameter dat7=4'hB; parameter dat8=4’hC; parameter dat9=4’hD; parameter

23、 dat10=4'hE; parameter dat11=5'h10; parameter nul=4’hF; always @(posedge clk) begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end always @(posedge clkr) begin current=next; case(current) set0: begin rs<=0; dat<=8’h31; next〈=set1; end /

24、/*设置8位格式,2行,5*7* set1: begin rs〈=0; dat〈=8'h0C; next<=set2; end //*整体显示,关光标,不闪烁*/ set2: begin rs〈=0; dat<=8’h6; next〈=set3; end //*设定输入方式,增量不移位*/ set3: begin rs<=0; dat<=8’h1; next<=dat0; end //*清除显示*/ //上面是LCD的初始化 dat0: begin rs<=1; dat〈=8’h3C; ne

25、xt〈=dat1; end dat1: begin rs<=1; dat<=”F”; next〈=dat2; end dat2: begin rs〈=1; dat〈="P"; next<=dat3; end dat3: begin rs〈=1; dat<=”G"; next<=dat4; end dat4: begin rs〈=1; dat〈="A”; next<=dat5; end dat5: begin rs<=1; dat〈=8'h3E; next〈=dat6; end dat6:

26、begin rs<=1; dat<="G"; next<=dat7; end dat7: begin rs〈=1; dat<="O”; next<=dat8; end dat8: begin rs〈=1; dat<="O"; next<=dat9; end dat9: begin rs〈=1; dat〈=”D”; next<=dat10; end dat10: begin rs<=1; dat<="!"; next〈=dat11; end dat11: begin rs〈=1; dat<="!”; ne

27、xt〈=nul; end //上面是在这12个状态中要显示的字符 FPGA GOOD!! nul: begin rs<=0; dat〈=8'h00; //行一遍 然后 把液晶的E 脚 拉高 if(cnt!=2’h2) begin e<=0;next<=set0;cnt〈=cnt+1; end else

28、 begin next〈=nul; e<=1; end end default: next=set0; endcase end assign en=clkr|e; assign rw=0; endmodule LCD12864显示汉字 //利用VHDL驱动LCD12864 //视频教程适合我们21EDA电子的所有学习板) //本实验是用LCD12864显示汉字.(LCD带字库) module LCD12864 (cl

29、k, rs, rw, en,dat); input clk; //系统时钟输入50M output [7:0] dat; //LCD的8位数据口 output rs,rw,en; //LCD的控制脚 reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [6:0] current,next; reg clkr; reg [1:0] cnt; parameter set0=6’h0; parameter set1=6'h1;

30、 parameter set2=6'h2; parameter set3=6’h3; parameter set4=6’h4; parameter set5=6’h5; parameter set6=6’h6; parameter dat0=6'h7; parameter dat1=6’h8; parameter dat2=6'h9; parameter dat3=6’hA; parameter dat4=6'hB; parameter dat5=6’hC; parameter dat6=6'hD;

31、 parameter dat7=6’hE; parameter dat8=6’hF; parameter dat9=6'h10; parameter dat10=6'h12; parameter dat11=6'h13; parameter dat12=6'h14; parameter dat13=6'h15; parameter dat14=6'h16; parameter dat15=6'h17; parameter dat16=6’h18; parameter dat17=6’h19; parame

32、ter dat18=6'h1A; parameter dat19=6’h1B; parameter dat20=6'h1C; parameter dat21=6'h1D; parameter dat22=6’h1E; parameter dat23=6’h1F; parameter dat24=6'h20; parameter dat25=6’h21; parameter dat26=6’h22; parameter dat27=6'h23; parameter dat28=6'h24; parameter

33、 dat29=6'h25; parameter dat30=6’h26; parameter dat31=6'h27; parameter dat32=6'h28; parameter dat33=6'h29; parameter dat34=6’h2A; parameter dat35=6’h2B; parameter dat36=6’h2C; parameter dat37=6'h2E; parameter dat38=6’h2F; parameter dat39=6’h30; parameter dat4

34、0=6'h31; parameter dat41=6'h32; parameter dat42=6’h33; parameter dat43=6'h34; parameter nul=6’h35; always @(posedge clk) //da de shi zhong pinlv begin counter=counter+1; if(counter==16'h000f) clkr=~clkr; end always @(posedge clkr) begin cur

35、rent=next; case(current) set0: begin rs〈=0; dat<=8'h31; next<=set1; end //*设置8位格式,2行,5*7* set1: begin rs<=0; dat<=8’h0C; next〈=set2; end //*整体显示,关光标,不闪烁*/ set2: begin rs〈=0; dat〈=8’h6; next<=set3; end //*设定输入方式,增量不移位*/ set3: begin rs〈=0; dat<=8’h1; next〈=

36、dat0; end //*清除显示*/ dat0: begin rs<=1; dat<=8'hc9; next<=dat1; end //显示第一行 dat1: begin rs<=1; dat<=8’hee; next〈=dat2; end dat2: begin rs<=1; dat〈=8’hdb; next〈=dat3; end dat3: begin rs〈=1; dat<=8’hda;next<=dat4; end dat4: begin rs〈=1; dat<=8’hca; next〈

37、dat5; end dat5: begin rs<=1; dat<=8’hd0; next<=dat6; end dat6: begin rs<=1; dat〈=”2"; next<=dat7; end dat7: begin rs<=1; dat〈="1";next〈=dat8; end dat8: begin rs〈=1; dat〈="E”; next<=dat9; end dat9: begin rs〈=1; dat〈=”D”;next〈= dat10 ; end dat1

38、0: begin rs〈=1; dat〈=8'hB5; next〈=dat11; end dat11: begin rs〈=1; dat〈=8'hE7; next〈=dat12; end dat12: begin rs〈=1; dat<=8’hd7;next<=dat13; end dat13: begin rs〈=1; dat<=8’hd3; next<=set4; end set4: begin rs〈=0; dat<=8'h90; next〈=dat14; end //显示第二

39、行 dat14: begin rs〈=1; dat〈="C"; next〈=dat15; end dat15: begin rs〈=1; dat<="P”; next〈=dat16; end dat16: begin rs〈=1; dat〈=”L”; next〈=dat17; end dat17: begin rs〈=1; dat〈=”D”; next<=dat18; end dat18: begin rs<=1; dat〈=”-"; next<=dat19; end dat19: be

40、gin rs〈=1; dat〈=”2"; next<=dat20; end dat20: begin rs<=1; dat〈="1”; next〈=dat21; end dat21: begin rs<=1; dat<=”E”; next〈=dat22; end dat22: begin rs〈=1; dat〈=”D”; next<=dat23; end dat23: begin rs〈=1; dat〈=”A”; next<=dat24 ; end dat24: begin rs〈=1; dat

41、<=8'hbf; next〈=dat25; end dat25: begin rs<=1; dat〈=8'haa; next〈=dat26; end dat26: begin rs<=1; dat<=8’hb7; next<=dat27; end dat27: begin rs〈=1; dat〈=8'ha2; next〈=dat28; end dat28: begin rs〈=1; dat〈=8’hb0; next<=dat29; end dat29: begin rs〈=1;

42、dat〈=8’he5; next<=set5 ; end set5: begin rs〈=0; dat〈=8’h88; next〈=dat30; end //显示第三行 dat30: begin rs〈=1; dat〈=”L"; next<=dat31; end dat31: begin rs〈=1; dat〈=”C"; next〈=dat32; end dat32: begin rs<=1; dat〈=”D”; next〈=dat33; end dat33: begin rs〈=1; dat〈=

43、—”; next<=dat34; end dat34: begin rs〈=1; dat<=8’hbf; next<=dat35; end dat35: begin rs<=1; dat〈=8’hd8; next<=dat36; end dat36: begin rs〈=1; dat<=8’hd6; next〈=dat37; end dat37: begin rs〈=1; dat<=8’hc6; next<=set6; end set6: begin rs<=0; dat〈=8’

44、h9C; next<=dat38; end //显示第四行 dat38: begin rs〈=1; dat〈=”G”; next〈=dat39; end dat39: begin rs<=1; dat〈=”O"; next〈=dat40; end dat40: begin rs<=1; dat〈="O”; next<=dat41; end dat41: begin rs<=1; dat<=”D”; next〈=dat42; end dat42: begin rs<=1; dat<=”!"; next

45、〈=dat43; end dat43: begin rs〈=1; dat〈="!"; next〈=nul; end nul: begin rs<=0; dat<=8'h00; // 把液晶的E 脚 拉高 if(cnt!=2'h2) begin e<=0;next〈=set0;cnt<=cnt+1; end

46、 else begin next<=nul; e<=1; end end default: next=set0; endcase end assign en=clkr|e; assign rw=0; endmodule LCD12864显示英文 //利用VHDL驱动LCD1602 //视频教程适合我们21EDA电子的所有学习板 //本实验是用LCD12864显示英文.(LCD带字库) modu

47、le LCD12864 (clk, rs, rw, en,dat); input clk; //系统时钟输入50M output [7:0] dat; //LCD的8位数据口 output rs,rw,en; //LCD的控制脚 reg e; reg [7:0] dat; reg rs; reg [15:0] counter; reg [5:0] current,next; reg clkr; reg [1:0] cnt; parameter set0=6’h0; parameter

48、 set1=6’h1; parameter set2=6’h2; parameter set3=6’h3; parameter set4=6’h4; parameter set5=6'h5; parameter set6=6’h6; parameter dat0=6'h7; parameter dat1=6’h8; parameter dat2=6'h9; parameter dat3=6’hA; parameter dat4=6'hB; parameter dat5=6’hC; parameter

49、 dat6=6’hD; parameter dat7=6'hE; parameter dat8=6’hF; parameter dat9=6'h10; parameter dat10=6'h12; parameter dat11=6'h13; parameter dat12=6'h14; parameter dat13=6'h15; parameter dat14=6'h16; parameter dat15=6’h17; parameter dat16=6'h18; parameter dat17=6’h19; parameter dat18=6'h1A; parameter dat19=6’h1B; parameter dat20=6’h1C; parameter dat21=6’h1D; parameter dat22=6’h1E; parameter dat23=6’h1F; parameter dat24=6’h20; parameter dat25=6'h21; parameter dat26=6’h22; parameter nul=6'hF1; alway

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服