FPGA_verilog之三八译码器的实现学习_day08
38译码器实现以及相关语法基础

1、38译码器简介
3个信号ABC控制8个开关
Design Source
module decoder_3_8( //括号里面是端口列表
a,
b,
c,
out
);
input a,b,c; //端口定义
output reg [7:0] out;//对out定义为1个8位的数据
//always块描述的信号赋值,被赋值对象必须定义为reg
// reg [7:0] out; //定义out为1个8位的寄存器
always @(*)
begin
//一个等价的写法是always @(a, b, c),其中的*表示通配符
//always表示一个语法块
case ({a,b,c}) //里面的大括号内容:{a,b.c}表示一个3位的信号这种操作叫做拼接
3'b000: out = 8'b0000_0001; //b表示binary 二进制,3'b000,表示一个3位的二进制信号,值为000
3'b001: out = 8'b00000010; //还有常用的格式,比如 d是十进制,3'd5,表示一个3位的十进制信号,值为5和3'b101完全等价
3'b010: out = 8'b00000100; //h是十六进制
3'b011: out = 8'b00001000; //o是八进制符号
3'b100: out = 8'b00010000;
3'b101: out = 8'b00100000;
3'b110: out = 8'b01000000;
3'b111: out = 8'b10000000;
endcase
end
//一个拼接的例子
//wire [3:0]d;
//assign d = {a,1'b0,b,c};
//拼接了一个四位的信号,其中第一位是a,第二位是0,第三位是b,第四位是c
endmodule
写完代码后进行RUN Synthesis, View Report,然后进行功能仿真
开始写test bench文件
cREATE SIMULATION SOURCES
`timescale 1ns/1ns //第一个是时间单位,第二个是时间精度
module decoder_3_8_tb; //由于这是仿真文件所以不需要写模块端口号
//开始例化
reg s_a,s_b,s_c; //定义s_a,s_b,s_c为reg信号
wire [7:0] s_out; //定义s_out为wire信号
decoder_3_8 decoder_3_8(
.a(s_a),
.b(s_b), //这里的s_a,s_b,s_c,s_out都是仿真文件中的信号
.c(s_c), //a,b,c都是激励信号,都要设计成reg信号
.out(s_out) //out是要被观测的信号,定义成wire类型
);
//结束例化
//开始产生激励
initial begin
s_a = 0; s_b = 0; s_c = 0; //初始化信号
#200 s_a = 0; s_b = 0; s_c = 1; //200ns后,s_a = 0; s_b = 0; s_c = 1;
#200 s_a = 0; s_b = 1; s_c = 0; //200ns后,s_a = 0; s_b = 1; s_c = 0;
#200 s_a = 0; s_b = 1; s_c = 1; //200ns后,s_a = 0; s_b = 1; s_c = 1;
#200 s_a = 1; s_b = 0; s_c = 0; //200ns后,s_a = 1; s_b = 0; s_c = 0;
#200 s_a = 1; s_b = 0; s_c = 1; //200ns后,s_a = 1; s_b = 0; s_c = 1;
#200 s_a = 1; s_b = 1; s_c = 0; //200ns后,s_a = 1; s_b = 1; s_c = 0;
#200 s_a = 1; s_b = 1; s_c = 1; //200ns后,s_a = 1; s_b = 1; s_c = 1;
end
endmodule
写完代码后保存
RUN Sythesis综合一下看看有没有报错,没有报错则进行
RUN Simulation

如果你想仿真时间长一点可以在endmodule前面你想停止仿真的地方加上语句
$stop;
进行仿真结束就可以开始板级调试了
Open Synthesized Design -> Layout ->I/O planing->这个就得看板子要求了->
ctrl+s保存,
管脚分配完成了就可以进行布局布线了
RUN Implementation
或者 Generate Bitstream一步到位 一般它会让你先分析和综合一下,->Open Hardware Manager(板子通电开始烧录)->open connected ->auto connected-》在hardware里面选中你的xc7a35t芯片->Program Device (烧录完成)

浙公网安备 33010602011771号