FPGA学习记录----二选一多路选择器
- 源文件代码
module Mux2( //括号里面写端口列表;Verilog里面区分大小写;不要忘记写分号;端口列表里面以逗号分隔,最后一个无逗号 a, b, sel, out ); //端口定义,使用分号而不是逗号 input a; input b; input sel; output out; //描述输入输出端口的逻辑关系 assign out = (sel == 0)?a:b; //Verilog中两大赋值语句之一 endmodule
- 测试文件代码
`timescale 1ns/1ns //前面的1ns表示1个单位的时间长度 //后面的1ns表示延时的精度,延时时间的最小刻度 module Mux2_tb( //对于tb文件,不需要对外端口,故不用定义写端口列表,括号里面空着或者直接删除括号 ); //定义信号 reg S0; reg S1; reg S2; wire Mux2_out; //例化 Mux2 Mux2_inst0( .a(S0), .b(S1), .sel(S2), .out(Mux2_out) ); //产生激励信号 initial begin S2 = 0; S1 = 0; S0 = 0; #20 //表示在目前仿真的时间线上推移20个1ns S2 = 0; S1 = 0; S0 = 1; #20 //该语句仅用于仿真中,不能用于写逻辑代码模块 S2 = 0; S1 = 1; S0 = 0; #20 S2 = 0; S1 = 1; S0 = 1; #20 S2 = 1; S1 = 0; S0 = 0; #20 S2 = 1; S1 = 0; S0 = 1; #20 S2 = 1; S1 = 1; S0 = 0; #20 S2 = 1; S1 = 1; S0 = 1; #20; end endmodule
- 相关语法分析
- 关于端口的定义,有两种写法,第一种是经典风格,第二种是ANSI-C风格。
(1)经典风格:先在端口列表中定义端口名,再声明方向与位宽。
module Mux2( a, b, sel, out ); input a; input b; input sel; output out; ......(2)ANSI-C风格:直接在端口列表中声明端口名、方向以及位宽。
module Mux2( input a, input b, input sel, output out ); ......(注:本文为观看“小梅哥FPGA”后的学习笔记)
(注:本文仍在更新中)
