找回密码
 注册
关于网站域名变更的通知
查看: 417|回复: 1
打印 上一主题 下一主题

转——从零开始学FPGA——by ihalin——38译码器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-1 11:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——从零开始学FPGA——by ihalin——38译码器
感谢小梅哥!!4 o$ B. U* G7 F8 ]; e; H6 N
昨天做了我FPGA的第一个实验
* _5 I, V( a( c3 k从零开始学FPGA我的第一个实验(记录一下)9 l  @8 w% a8 J
今天第二个实验38译码器; V' ]) h  G$ l. E6 g2 U
真值表0 H/ G& Z" g6 {* s: f! `

( y9 F8 B5 [( L) I8 J原理:" Z, }- [7 [; b7 f7 f9 U
有三个(一位)输入
2 t6 W) r4 I: G0 a+ Z一个输出(8位)7 k# P8 c' M5 g( W/ l" h2 m
使用了一个always块,always块语句注意阻塞赋值和非阻塞赋值(<=, = )& ?  E2 W& i" F
{a,b,c}位拼接把三个一位的拼接成一个3位的4 z: \5 D) Y# U0 G
位拼接:
. J$ S$ i2 h2 l0 q9 H2 ~% C/ S{a,b[3:0],w,3'b101}等价于{a,b[3],b[2],b[1],b[0],w,1'b1,1'b0,1'b1}
7 b7 r+ Q  |! `6 F{4{w}}等价于{w,w,w,w}
1 L, J" g2 t& i- S8 @* u{b,{3{a,b}}}等价于{b,a,b,a,b,a,b}+ w' s2 V/ U  V/ M0 d5 N
case用法和c类似记住还有个default& S) c  z4 @4 B4 `; z
3'b000表示位宽是3 的二进制 0008 P7 q  W; B- k7 W
位宽+进制+数值) `6 T! c4 R0 u8 d+ Q% i
进制+数值(默认位宽有机器系统决定)) l8 ]" \. ~* r, G; Z5 ]8 c
数字(默认10进制)
) T. @, [1 F) D5 M/ j2进制 b/B bin
) j- C/ H7 O: V1 Z5 G2 i  ]8进制 o/O octonary
( m* m% L1 H* R1 D( k10进制 d/D decimal
9 W% R; E! y% ~% G8 s: ^+ [16进制h/H hex
1. module smg3_8(a,b,c,out);
2.
3.         input a;//输入端口a
4.         input b;//输入端口b
5.         input c;//输入端口c
6.         
7.         output reg [7:0]out;//输出端口out
8.         
9.         always@(a,b,c)begin
10.                 case({a,b,c})
11.                         3'b000:  out=8'b0000_0001;//下划线不影响
12.                         3'b001:        out=8'b0000_0010;
13.                         3'b010:        out=8'b0000_0100;
14.                         3'b011:        out=8'b0000_1000;
15.                         3'b100:        out=8'b0001_0000;
16.                         3'b101:        out=8'b0010_0000;
17.                         3'b110:        out=8'b0100_0000;
18.                         3'b111:        out=8'b1000_0000;
19.                         //default:
20.                 endcase
21.         end
22. endmodule
测试代码:% R. c* V4 c, U. h; ~
reg型是激励信号源的5 P7 @' \, I0 ~) Y3 o6 K( d9 ]
wire 型的是输出信号的观察信号
1. `timescale 1ns/1ns
2.
3. module smg3_8_tb;
4.
5.         reg a;//reg 型是激励信号源
6.         reg b;
7.         reg c;
8.         
9.         wire [7:0]out;//wire 型的是出信号的观察信号
10.         smg3_8 smg(
11.                    .a(a),
12.                                   .b(b),
13.                                   .c(c),
14.                                   .out(out)
15.         );
16.         
17.         initial begin
18.         a = 0;b = 0; c = 0;
19.         #200;
20.         a = 0;b = 0; c = 1;
21.         #200;
22.         a = 0;b = 1; c = 0;
23.         #200;
24.         a = 0;b = 1; c = 1;
25.         #200;
26.         a = 1;b = 0; c = 0;
27.         #200;
28.         a = 1;b = 0; c = 1;
29.         #200;
30.         a = 1;b = 1; c = 0;
31.         #200;
32.         a = 1;b = 1; c = 1;
33.         #200;
34.         $stop;
35.         end
36.                 
37. endmodul
RTL仿真:
" w7 K3 ^) [# o2 L
符合设计初衷
5 D& r" r4 z# A, N6 B
然后是门级仿真
/ a9 Q6 k6 G2 {1 o
5 k, M' W6 k! W9 H/ Z; Y
发现和RTL仿真有些区别会出现一些跳变的过度值如0000 0000,现在还不知道怎么去避免。
" K' H/ W8 C! f) t$ m

. p! n2 @. W3 o' r
下面是我在开发板上做的测试1 T1 F6 h( Q: Z" \( V6 ^

9 Y' v. [0 B  a% u% @

该用户从未签到

2#
发表于 2019-4-1 16:40 | 只看该作者
教程很想详细啊 楼主费心了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 01:37 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表