当前位置:   article > 正文

011 Verilog原语_verilog 原语

verilog 原语

原语

是构成设计的最基本单元,通过真值表描述其功能,包括基本逻辑门在内有26个预定义功能模型

n输入逻辑门

在这里插入图片描述

原语描述使用
and与门and(yout, xin1, xin2, xin3)
nand与非nand(yout, xin1, xin2, xin3)
or或门or(yout, xin1, xin2, xin3)
nor或非nor(yout, xin1, xin2, xin3)
xor异或xor(yout, xin1, xin2, xin3)
xnor同或nxor(yout, xin1, xin2, xin3)

n输出组合门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

UDP(User Defined Primitive,用户自定义原语)

符号汇总
符号意义
0,1,x逻辑0,1,x为未知值,UDP中没有z
?无关逻辑,可以是0,1,x
b逻辑0或1
-不变化
(xy)从x变为y,如(01)为上升沿
*输入信号的任何变化
r上升沿
f下降沿
p含x的上升沿,等同于(01)、(0x)、(x1)
n含x的下降沿,等同于(10)、(x0)、(1x)
与门
primitive and(y, x1, x2);
	output y;
	input x1, x2;

	table
	// x1 x2 : y
	0 0 : 0;
	0 1 : 0;
	1 0 : 0;
	1 1 : 1;
	endtable
endprimitive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2输入多路复用器

输入可以是0,1,x,所以考虑所有情况的2输入多路复用器如下:

primitive mux_two(out, select, a, b);
	output out;
	input select, a, b;
	// y = select ? a : b;

	table
	// select	a	b	:	out
	   0		0	0	:	0;
	   0		0	1	:	0;
	   0		0	x	:	0;
	   0		1	0	:	1;
	   0		1	1	:	1;
	   0		1	x	:	1;

	   1		0	0	:	0;
	   1		1	0	:	0;
	   1		x	0	:	0;
	   1		0	1	:	1;
	   1		1	1	:	1;
	   1		x	1	:	1;

	   x		0	0	:	0;
	   x		1	1	:	1;
	endtable
endprimitive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

使用助记符?简化,?=0,1,x

primitive mux_two(out, select, a, b);
	output out;
	input select, a, b;
	// y = select ? a : b;

	table
	// select	a	b	:	out
	   0		0	?	:	0;
	   0		1	?	:	1;

	   1		?	0	:	0;
	   1		?	1	:	1;

	   ?		0	0	:	0;
	   ?		1	1	:	1;
	endtable
endprimitive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

透明锁存器(电平敏感)

其实就是带使能的锁存器

primitive latch_with_enable(q_out, enable, data);
	output q_out;
	input enable, data;
	reg q_out;
	// q_out = enable ? data : q_out;
	// - 表示保持

	table
	// 时序逻辑table格式
	// input1	input2	state 	: 	output/next_state
	// enable	data	state	:	q_out/next_state
	   1		1			?	:	1;
	   1		0			?	:	0;
	   0		?			?	:	-;

	   x		0			0	:	-;
	   x		1			1	:	-;
	endtable
endprimitive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

D触发器(边沿敏感)

primitive DFF(q_out, clk, data);
	output q_out;
	input clk, data;
	reg q_out;
	// q_out = posedge(clk) ? data : q_out;
	// - 表示保持

	table
	// 时序逻辑table格式
	// input1	input2	state 	: 	output/next_state
	// clk		data	state	:	q_out/next_state
	   (01)		0		?		:	0;
	   (01)		1		?		:	1;
	   (0?)		1		1		:	1;

	   (?0)		?		?		:	-;

	   ?		(??)	?		:	-;
	endtable
endprimitive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/206570
推荐阅读
相关标签
  

闽ICP备14008679号