octart.tdf

来自「verilog编写的全功能串口」· TDF 代码 · 共 39 行

TDF
39
字号
include "uartbaud";
include "miniuart";
subdesign octart
(
	c/d				:	input;
	a[2..0]			:	input;
	d[7..0]			:	bidir;
	cs				:	input;
	/wr				:	input;
	/rd				:	input;
	/int[7..0]		:	output;
	clock			:	input;
	txd[7..0]		:	output;
	rxd[7..0]		:	input;
)
variable
	fn_baud			:	uartbaud with (crystal=20000000,baudrate=9600*8);
	fn_uart[7..0]	:	miniuart with (crystal=20000000,genclk="NO");

	d_node[7..0]	:	node;
begin
	fn_baud.sysclk=global(clock);
	for i in 7 to 0 generate
		fn_uart[i].clock=clock;
		fn_uart[i].inbaud=fn_baud.baud;
		fn_uart[i]./wr=/wr;
		fn_uart[i]./rd=/rd;
		/int[i]=fn_uart[i]./int;
		txd[i]=fn_uart[i].txd;
		fn_uart[i].rxd=rxd[i];
		d[i]=tri(d_node[i],not /rd and not c/d and cs);
		fn_uart[i].d_in[]=d[];
		if (i==a[]) and not c/d and cs then
			fn_uart[i].cs=vcc;
			d_node[]=fn_uart[i].d_out[];
		end if;
	end generate;
end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?