例4.12:多路器的设计实例。
使用assign赋值语句、case语句或if-else语句可以生成多路器电路。如果条件语句(case或if-else)中分支条件是互斥的话,综合器能自动地生成并行的多路器。
多路器设计方案一。
modul emux1(out,a,b,sel); //模块声明
output out;
input a,b,sel; //端口声明
//使用assign语句检查输入信号sel的值
assign out = sel ? a : b; //当sel为1时,out为a;否则为b
endmodule
多路器设计方案二。
module mux2( out,a,b,sel); //模块声明
output out;
input a,b,sel; //端口声明
reg out;
always @(a or b or sel) begin //用电平触发的always块来设计多路器的组合逻辑
case( sel ) //使用case语句检查输入信号sel的值
1'b1: out = a; //如果为1,输出out为a
1'b0: out = b; //如果为0,输出out为b
default: out = 'bx; //默认状态
endcase
end
endmodule
多路器设计方案三。
module mux3( out,a,b sel); //模块声明
output out;
input a, b, sel; //端口声明
reg out;
always @( a or b or sel ) begin
if( sel ) //使用if_else语句检查输入信号sel的值
out = a; //如果为1,输出out为a
else
out = b; //如果为0,输出out为b
end
endmodule
例4.13:奇偶校验位生成器设计实例。
module parity( even_numbits,odd_numbits,input_bus); //模块声明
output even_numbits, odd_numbits;
input [7:0] input_bus; //端口声明
assign odd_numbits = ^input_bus; //当input_bus中1的个数为奇数时,输出为1
assign even_numbits = ~odd_numbits; //此时输出even_numbits为0
endmodule
例4.14:三态输出驱动器设计实例(用连续赋值语句建立三态门模型)。
三态输出驱动器设计方案一。
module trist1( out,in,enable); //模块声明
output out;
input in, enable; //端口声明
assign out = enable? in: 'bz; //使用assign语句判断enable的值
endmodule
三态输出驱动器设计方案二。
module trist2( out,in,enable ); //模块声明
output out;
input in,enable; //端口声明
bufif1 mybuf1(out, in, enable); //bufif1是一个 Verilog门级原语(primitive)
本文关键字:风格 电脑-单片机-自动控制,电子学习 - 基础知识 - 电脑-单片机-自动控制