# FPGA入门笔记002——译码器
1.FPGA入门笔记001
2.# FPGA入门笔记002——译码器
3.FPGA入门笔记006——状态机设计实例4.FPGA入门笔记005——阻塞赋值和非阻塞赋值的区别5.FPGA入门笔记004——BCD计数器设计与使用6.FPGA入门笔记003——计数器IP核调用与验证7.FPGA入门笔记013——嵌入式块RAM使用之FIFO8.FPGA入门笔记012——嵌入式块RAM应用之ROM9.FPGA入门笔记011_B——搭建串口收发与存取双口RAM简易应用系统10.FPGA入门笔记011_A——嵌入式块RAM的使用11.FPGA入门笔记010——UART串口接收模块设计12.FPGA入门笔记009——UART串口发送模块设计13.FPGA入门笔记008——数码管动态扫描设计与验证14.FPGA入门笔记007_A——按键消抖模块设计与验证(状态机、$random、仿真模型、task语法)设计一个38译码器
项目文件编写:
module my3_8( a, b, c, out ); input a; //输入端口A input b; //输入端口B input c; //输入端口C output reg[7:0]out; //输出端口 /* always块: '()'内部为敏感信号,当a、b、c有一个信号发生变化时,执行always块中的语句 凡是在always块中赋值的信号,必须将其定义为reg型 */ always@(a,b,c)begin case({a,b,c}) //'{}'为多位拼接,将a、b、c三个信号拼接成一个三位的信号 3'b000:out = 8'b0000_0001; //'_'为占位符,不表示任何含义 3'b001:out = 8'b0000_0010; 3'b010:out = 8'b0000_0100; 3'b011:out = 8'b0000_1000; 3'b100:out = 8'b0001_0000; 3'b101:out = 8'b0010_0000; 3'b110:out = 8'b0100_0000; 3'b111:out = 8'b1000_0000; endcase end endmodule
语法知识:
1、always块
1、'()'内部为敏感信号,当a、b、c有一个信号发生变化时,执行always块中的语句
2、凡是在always块中赋值的信号,必须将其定义为reg型
2、多位拼接
'{}'为多位拼接,将a、b、c三个信号拼接成一个三位的信号
仿真文件编写:
`timescale 1ns/1ps module my3_8_tb(); reg a; reg b; reg c; wire [7:0]out; my3_8 u1( .a(a), .b(b), .c(c), .out(out) ); initial begin a = 0;b = 0;c = 0; #200; a = 0;b = 0;c = 1; #200; a = 0;b = 1;c = 0; #200; a = 0;b = 1;c = 1; #200; a = 1;b = 0;c = 0; #200; a = 1;b = 0;c = 1; #200; a = 1;b = 1;c = 0; #200; a = 1;b = 1;c = 1; #200; $stop; end endmodule
本文作者:Yamada_Ryo
本文链接:https://www.cnblogs.com/little55/p/17837418.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步