已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/halflife/archive/2010/06/04/1751214.html本练习的目的是使用计数器。Part I 用T触发器实现16-bit的计数器参照图 1所示的4-bit的同步计数器,实现一个16-bit 的计数器。代码 1 /top-level file 2 module part1(KEY0,SW,HEX3,HEX2,HEX1,HEX0); 3 input KEY0; /时钟脉冲 4 input 1:0SW; /使能&复位 5 output 6:0HEX3,HEX2,HEX1,HEX0; /输出显示 6 wire 15:0q; /16-bit计数输出 7 8 counter_16(SW1,KEY0,SW0,q); 9 10 seg7_lut H0(q3:0,HEX0);11 seg7_lut H1(q7:4,HEX1);12 seg7_lut H2(q11:8,HEX2);13 seg7_lut H3(q15:12,HEX3);14 15 endmodule 1 /由T触发器构建的16-bit计数器 2 module counter_16(en,clk,clr,Q); 3 input en,clk,clr; 4 wire 15:0q; 5 output 15:0Q; 6 t_ff u0(en,clk,clr,q0); 7 t_ff u1(en&q0,clk,clr,q1); 8 t_ff u2(en&q0&q1,clk,clr,q2); 9 t_ff u3(en&q0&q1&q2,clk,clr,q3);10 t_ff u4(en&q0&q1&q2&q3,clk,clr,q4);11 t_ff u5(en&q0&q1&q2&q3&q4,clk,clr,q5);12 t_ff u6(en&q0&q1&q2&q3&q4&q5,clk,clr,q6);13 t_ff u7(en&q0&q1&q2&q3&q4&q5&q6,clk,clr,q7);14 t_ff u8(en&q0&q1&q2&q3&q4&q5&q6&q7,clk,clr,q8);15 t_ff u9(en&q0&q1&q2&q3&q4&q5&q6&q7&q8,16 clk,clr,q9);17 t_ff u10(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9,18 clk,clr,q10); 19 t_ff u11(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9&q10,20 clk,clr,q11); 21 t_ff u12(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9&q10&q11,22 clk,clr,q12); 23 t_ff u13(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9&q10&q11&q12,24 clk,clr,q13); 25 t_ff u14(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9&q10&q11&q12&q13,26 clk,clr,q14); 27 t_ff u15(en&q0&q1&q2&q3&q4&q5&q6&q7&q8&q9&q10&q11&q12&q13&q14,28 clk,clr,q15); 29 30 assign Q=q; 31 32 endmodule 1 /T flip flop 2 module t_ff(t,clk,rst_n,q); 3 input t,clk,rst_n; 4 output reg q; 5 6 always (posedge clk) 7 begin 8 if(!rst_n) 9 q=0;10 else 11 begin12 if(t=1b1)13 q=q;14 else 15 q=q;16 end 17 end18 19 endmodule 图值图占用的数量Part用赋值语句实现-计数器代码 1 /counter-16bit 2 module part2(clk,rst_n,q); 3 input clk,rst_n; 4 output reg 15:0q; 5 6 always (posedge clk) 7 begin 8 if(!rst_n) 9 q=1b0;10 else 11 begin12 if(q=65535)13 q=0;14 else15 q=q+1;16 end17 end18 19 endmodule图-计数器的视图图值图-计数器占用的Part用实现-计数器代码1 /Top-level file2 module counter_lpm(en,clk,clr,q);3 input en,clk,clr;4 output 15:0q;5 6 megcounter counter_16bit(.clock(clk),.cnt_en(en),.sclr(clr),7 .q(q)8 );9 endmodule 1 / synopsys translate_off 2 timescale 1 ps / 1 ps 3 / synopsys translate_on 4 module megcounter ( 5 clock, 6 cnt_en, 7 sclr, 8 q); 9 10 input clock;11 input cnt_en;12 input sclr;13 output 15:0 q;14 15 wire 15:0 sub_wire0;16 wire 15:0 q = sub_wire015:0;17 18 lpm_counter lpm_counter_component (19 .sclr (sclr),20 .clock (clock),21 .cnt_en (cnt_en),22 .q (sub_wire0),23 .aclr (1b0),24 .aload (1b0),25 .aset (1b0),26 .cin (1b1),27 .clk_en (1b1),28 .cout (),29 .data (161b0),30 .eq (),31 .sload (1b0),32 .sset (1b0),33 .updown (1b1);34 defparam35 lpm_counter_component.lpm_direction = UP,36 lpm_counter_component.lpm_port_updown = PORT_UNUSED,37 lpm_counter_component.lpm_type = LPM_COUNTER,38 lpm_counter_component.lpm_width = 16;39 40 41 endmodule图用实现-计数器所占用的Part循环显示-在上循环显示-,每秒刷新一次。代码 1 /top-level file 2 module seg_number( 3 output 6:0HEX0, 4 input CLOCK_50, 5 input 0:0KEY 6 ); 7 8 wire clk_1hz; 9 reg 3:0cnt; 10 11 div u0( 12 .o_clk(clk_1hz), 13 .i_clk(CLOCK_50), 14 .rst_n(KEY) 15 ); 16 17 always (posedge clk_1hz or negedge KEY) 18 begin 19 if(!KEY) 20 cnt=4b0; 21 else 22 begin 23 if(cnt=4d9) 24 cnt=4b0; 25 else 26 cnt=cnt+1b1; 27 end 28 end 29 30 seg7_lut u1( 31 .oseg(HEX0), 32 .idig(cnt3:0) 33 ); 34 endmodule 35 36 /divider 37 module div( 38 output reg o_clk, 39 input rst_n, 40 input i_clk 41 ); 42 43 parameter N=50_000_000; 44 parameter M=24_999_999; 45 46 reg 25:0cnt; 47 48 always (posedge i_clk or negedge rst_n) 49 begin 50 if(!rst_n) 51 cnt=26b0; 52 else 53 begin 54 if(cnt=N-1) 55 cnt=26b0; 56 else 57 cnt=cnt+26b1; 58 end 59 end 60 always (posedge i_clk or negedge rst_n) 61 begin 62 if(!rst_n) 63 o_clk=0; 64 else 65 begin 66 if(cnt=M) 67 o_clk=1; 68 else 69 o_clk=0; 70 end 71 end 72 73 endmodule 74 75 /seg7_lut 76 module seg7_lut ( 77 output reg 6:0 oseg, 78 input 3:0 idig 79 ); 80 always (idig) 81 begin 82 case (idig) 83 4h1: oseg = 7b1111001; / -t- 84 4h2: oseg = 7b0100100; / | | 85 4h3: oseg = 7b0110000; / lt rt 86 4h4: oseg = 7b0011001; / | | 87 4h5: oseg = 7b0010010; / -m- 88 4h6: oseg = 7b0000010; / | | 89 4h7: oseg = 7b1111000; / lb rb 90 4h8: oseg = 7b0000000; / | | 91 4h9: oseg = 7b0011000; / -b- 92 4ha: oseg = 7b0001000; 93 4hb: oseg = 7b0000011; 94 4hc: oseg = 7b1000110; 95 4hd: oseg = 7b0100001; 96 4he: oseg = 7b0000110; 97 4hf: oseg = 7b0001110; 98 default: oseg = 7b1000000; 99 endcase100 end101 endmodule Part循环显示在上循环显示,如图所示。图个上循环显示代码top-level file 1 /top-level file 2 module hello(HEX7,HEX6,HEX5,HEX4, 3 HEX3,HEX2,HEX1,HEX0, 4 CLOCK_50,KEY); 5 input CLOCK_50; 6 input 0:0KEY; 7 output 6:0HEX7,HEX6,HEX5,HEX4,HEX3,HEX2, 8 HEX1,HEX0; 9 10 wire clk_1hz;11 reg 3:0cnt;12 13 div u0(.o_clk(clk_1hz),14 .rst_n(KEY),15 .i_clk(CLOCK_50)16 );17 18 always (posedge clk_1hz or negedge KEY)19 begin20 if(!KEY)21 cnt=4b0;22 else 23 begin24 if(cnt=4b0111)25 cnt=4b0;26 else27 cnt=cnt+1b1;28 end29 end30 31 seg7_h0 h0(.oseg(HEX0),32 .idig(cnt)33 );34 seg7_h1 h1(.oseg(HEX1),35 .idig(cnt)36 );37 seg7_h2 h2(.oseg(HEX2),38 .idig(cnt)39 );40 seg7_h3 h3(.oseg(HEX3),41 .idig(cnt)42 );43 seg7_h4 h4(.oseg(HEX4),44 .idig(cnt)45 );46 seg7_h5 h5(.oseg(HEX5),47 .idig(cnt)48 );49 seg7_h6 h6(.oseg(HEX6),50 .idig(cnt)51 );52 seg7_h7 h7(.oseg(HEX7),53 .idig(cnt)54 ); 55 endmodule分频器 1 /divider 2 module div( 3 output reg o_clk, 4 input rst_n, 5 input i_clk 6 ); 7 8 parameter N=50_000_000; 9 parameter M=24_999_999;10 11 reg 25:0cnt;12 13 always (posedge i_clk or negedge rst_n)14 begin15 if(!rst_n)16 cnt=26b0;17 else18 begin19 if(cnt=N-1)20 cnt=26b0;21 else22 cnt=cnt+26b1;23 end24 end25 always (posedge i_clk or negedge rst_n)26 begin27 if(!rst_n)28 o_clk=0;29 else30 begin31 if(cnt=M)32 o_clk=1;33 else34 o_clk=0;35 end36 end37 38 endmodule译码0 1 /seg7_lut 2 module seg7_h0 3 ( 4 output reg 6:0 oseg, 5 input 3:0 idig 6 ); 7 always (idig) 8 begin 9 case (idig)10 4h0: oseg = 7b1000000; /O11 /4h1: oseg = 7b1111001; 12 /4h2: oseg = 7b0100100; 13 /4h3: oseg = 7b0110000; 14 4h4: oseg = 7b000100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舟山市中医院科室运营分析考核
- 连云港市人民医院超声医学伦理考核
- 白酒评鉴活动方案
- 登高拓展活动方案
- 红黄蓝春季活动方案
- 红纸黑字促销活动方案
- 红色足迹寻访活动方案
- 百亿流量扶持活动方案
- 疫情装饰公司活动方案
- 红酒相关活动方案
- 售后服务人员工作自我总结范文
- 2025年高中语文必修上册第二单元大单元教学设计
- 2024-2025学年广东省广州六中等校联考七年级(上)期中语文试卷
- (2025年)建筑起重信号司索工考试题库(附答案)
- 通信管道施工安全培训课件
- 2025年长春市团校入团考试题库及参考答案详解
- 消防联动调试方案(完整版)
- 收费站廉政培训课件
- 酒店数字化运营知识培训课件
- 2025至2030中国健康管理行业发展形势及投资规划预测报告
- 2023年无锡市江阴文化商业旅游产业集团有限公司招聘考试真题及答案附答案详解(完整版)
评论
0/150
提交评论