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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——从零开始学FPGA——by ihalin——38译码器
感谢小梅哥!!
+ z' H+ ]* Z( E; l# X* G+ H9 R昨天做了我FPGA的第一个实验' A3 W! T1 e) K
从零开始学FPGA我的第一个实验(记录一下)
* Y9 U# p: r  m7 N% ?) e今天第二个实验38译码器
2 D- G9 U; f1 g1 x真值表/ U; ~+ h* @! e8 e7 W7 @- Z

  t) m; G1 d& X! _8 C原理:. n* h0 r4 t# I/ T: ^# U
有三个(一位)输入
% D# V8 d) I% f6 |6 f4 x一个输出(8位)
4 s% |9 c( R0 u" K4 e( W使用了一个always块,always块语句注意阻塞赋值和非阻塞赋值(<=, = )
" K  _$ I! l/ O. C( B# j* k{a,b,c}位拼接把三个一位的拼接成一个3位的
' J! W8 ~- _0 F位拼接:  B% S1 M( k- G, x$ F
{a,b[3:0],w,3'b101}等价于{a,b[3],b[2],b[1],b[0],w,1'b1,1'b0,1'b1}4 r# ?' ]& r; k: r5 r
{4{w}}等价于{w,w,w,w}
# V# m' T% p8 J4 u5 H{b,{3{a,b}}}等价于{b,a,b,a,b,a,b}1 g) t+ [7 b: ~
case用法和c类似记住还有个default
* a. J, z! G: a3 e& `3'b000表示位宽是3 的二进制 000
, ?. B4 E/ K: G  h3 i. @位宽+进制+数值
4 p+ \# @% U6 }进制+数值(默认位宽有机器系统决定)
, s6 {6 `) N$ Y1 ]2 Z; r数字(默认10进制)
1 ?& P) e7 L' ?0 q2进制 b/B bin0 ~1 f5 G- Q* P% a
8进制 o/O octonary
8 f8 Y  J' e/ |4 ^) I) G% u/ I0 J10进制 d/D decimal
5 n/ a9 i5 t2 ^" \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
测试代码:; A( H: m3 T6 Y+ f9 O  c
reg型是激励信号源的
8 x* @4 p) a8 T5 j$ t! f& X0 t
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仿真:
* s/ W6 a* w/ E* f2 U& n; a/ U
符合设计初衷( T# K- R8 {$ T: c
然后是门级仿真
( d- h# E) |, x  D% T
. d. O2 K  n* q: l8 |5 w
发现和RTL仿真有些区别会出现一些跳变的过度值如0000 0000,现在还不知道怎么去避免。
# j2 Q" l* e. n- G7 L
9 n8 O0 ?: x; r
下面是我在开发板上做的测试/ ?; \5 h# @' j9 `$ J
6 L* ^+ s% U4 k- W

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 23:04 , Processed in 0.171875 second(s), 27 queries , Gzip On.

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

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

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