DE2 实验练习解答lab4 countersverilogdigital logicWord文件下载.docx
- 文档编号:16103974
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:13
- 大小:307.87KB
DE2 实验练习解答lab4 countersverilogdigital logicWord文件下载.docx
《DE2 实验练习解答lab4 countersverilogdigital logicWord文件下载.docx》由会员分享,可在线阅读,更多相关《DE2 实验练习解答lab4 countersverilogdigital logicWord文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
15endmodule
1//由T触发器构建的16-bit计数器
2modulecounter_16(en,clk,clr,Q);
3inputen,clk,clr;
4wire[15:
5output[15:
0]Q;
6t_ffu0(en,clk,clr,q[0]);
7t_ffu1(en&
q[0],clk,clr,q[1]);
8t_ffu2(en&
q[0]&
q[1],clk,clr,q[2]);
9t_ffu3(en&
q[1]&
q[2],clk,clr,q[3]);
10t_ffu4(en&
q[2]&
q[3],clk,clr,q[4]);
11t_ffu5(en&
q[3]&
q[4],clk,clr,q[5]);
12t_ffu6(en&
q[4]&
q[5],clk,clr,q[6]);
13t_ffu7(en&
q[5]&
q[6],clk,clr,q[7]);
14t_ffu8(en&
q[6]&
q[7],clk,clr,q[8]);
15t_ffu9(en&
q[7]&
q[8],
16clk,clr,q[9]);
17t_ffu10(en&
q[8]&
q[9],
18clk,clr,q[10]);
19t_ffu11(en&
q[9]&
q[10],
20clk,clr,q[11]);
21t_ffu12(en&
q[10]&
q[11],
22clk,clr,q[12]);
23t_ffu13(en&
q[11]&
q[12],
24clk,clr,q[13]);
25t_ffu14(en&
q[12]&
q[13],
26clk,clr,q[14]);
27t_ffu15(en&
q[13]&
q[14],
28clk,clr,q[15]);
29
30assignQ=q;
31
32endmodule
1//Tflipflop
2modulet_ff(t,clk,rst_n,q);
3inputt,clk,rst_n;
4outputregq;
5
6always@(posedgeclk)
7begin
8if(!
rst_n)
9q<
=0;
10else
11begin
12if(t==1'
b1)
13q<
=~q;
14else
15q<
=q;
16end
17end
18
19endmodule
图2 Fmax值
图3 占用的LE数量
Part II 用赋值语句实现16-bit计数器
代码
1//counter-16bit
2modulepart2(clk,rst_n,q);
3inputclk,rst_n;
4outputreg[15:
=1'
b0;
12if(q==65535)
=q+1;
图4 16-bit计数器的RTL视图
图5 Fmax值
图6 16-bit计数器占用的LE
Part III 用LPM实现16-bit计数器
1//Top-levelfile
2modulecounter_lpm(en,clk,clr,q);
3inputen,clk,clr;
4output[15:
5
6megcountercounter_16bit(.clock(clk),.cnt_en(en),.sclr(clr),
7.q(q)
8);
9endmodule
1//synopsystranslate_off
2`timescale1ps/1ps
3//synopsystranslate_on
4modulemegcounter(
5clock,
6cnt_en,
7sclr,
8q);
10inputclock;
11inputcnt_en;
12inputsclr;
13output[15:
0]q;
15wire[15:
0]sub_wire0;
16wire[15:
0]q=sub_wire0[15:
0];
17
18lpm_counterlpm_counter_component(
19.sclr(sclr),
20.clock(clock),
21.cnt_en(cnt_en),
22.q(sub_wire0),
23.aclr(1'
b0),
24.aload(1'
25.aset(1'
26.cin(1'
b1),
27.clk_en(1'
28.cout(),
29.data({16{1'
b0}}),
30.eq(),
31.sload(1'
32.sset(1'
33.updown(1'
b1));
34defparam
35lpm_counter_component.lpm_direction="
UP"
36lpm_counter_component.lpm_port_updown="
PORT_UNUSED"
37lpm_counter_component.lpm_type="
LPM_COUNTER"
38lpm_counter_component.lpm_width=16;
39
40
41endmodule
图7 用LPM实现16-bit计数器所占用的LE
Part IV 循环显示0-9
在HEX0上循环显示0-9,每秒刷新一次。
2moduleseg_number(
3output[6:
0]HEX0,
4inputCLOCK_50,
5input[0:
0]KEY
6);
8wireclk_1hz;
9reg[3:
0]cnt;
10
11divu0(
12.o_clk(clk_1hz),
13.i_clk(CLOCK_50),
14.rst_n(KEY)
15);
16
17always@(posedgeclk_1hzornegedgeKEY)
18begin
19if(!
KEY)
20cnt<
=4'
21else
22begin
23if(cnt==4'
d9)
24cnt<
25else
26cnt<
=cnt+1'
b1;
27end
28end
29
30seg7_lutu1(
31.oseg(HEX0),
32.idig(cnt[3:
0])
33);
34endmodule
35
36//divider
37modulediv(
38outputrego_clk,
39inputrst_n,
40inputi_clk
41);
42
43parameterN=50_000_000;
44parameterM=24_999_999;
45
46reg[25:
47
48always@(posedgei_clkornegedgerst_n)
49begin
50if(!
51cnt<
=26'
52else
53begin
54if(cnt==N-1)
55cnt<
56else
57cnt<
=cnt+26'
58end
59end
60always@(posedgei_clkornegedgerst_n)
61begin
62if(!
63o_clk<
64else
65begin
66if(cnt<
=M)
67o_clk<
=1;
68else
69o_clk<
70end
71end
72
73endmodule
74
75//seg7_lut
76moduleseg7_lut(
77outputreg[6:
0]oseg,
78input[3:
0]idig
79);
80always@(idig)
81begin
82case(idig)
834'
h1:
oseg=7'
b1111001;
//---t---
844'
h2:
b0100100;
//||
854'
h3:
b0110000;
//ltrt
864'
h4:
b0011001;
874'
h5:
b0010010;
//---m---
884'
h6:
b0000010;
894'
h7:
oseg=7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DE2 实验练习解答lab4 countersverilogdigital logic 实验 练习 解答 lab4
![提示](https://static.bdocx.com/images/bang_tan.gif)
链接地址:https://www.bdocx.com/doc/16103974.html