FPGA series # vivado之添加switch和VIO核

今天在之前代码的基础上,把两组置0的高位数据也通过模块跑了一遍,出来效果还可以看。顺手添加了个开关,当switch置0时不经过gamma模块,置1时经过。

assign 			addrb_r = s_axis_gamma_tdata[23 : 16]	;
assign 			addrb_g = s_axis_gamma_tdata[15 : 8 ]	;	    
assign 			addrb_b = s_axis_gamma_tdata[7  : 0 ]	;
	
assign			m_axis_gamma_tdata_fifo_in = {8'b0,doutb_r, doutb_g, doutb_b};

assign			m_axis_gamma_tdata	=	(switch == 1)?m_axis_gamma_tdata_fifo_out[23:0]:s_axis_gamma_tdata ;
assign			m_axis_gamma_tlast	=	(switch == 1)?m_axis_gamma_tlast_fifo	 : s_axis_gamma_tlast ;
assign			m_axis_gamma_tuser	=	(switch == 1)?m_axis_gamma_tuser_fifo	 : s_axis_gamma_tuser ;
assign			m_axis_gamma_tvalid	=	(switch == 1)?m_axis_gamma_tvalid_fifo : s_axis_gamma_tvalid;
assign			s_axis_gamma_tready	=	(switch == 1)?s_axis_gamma_tready_fifo : m_axis_gamma_tready;

这里m_axis_gamma_tdata_fifo_in 的高八位还是要置0 是因为这个fifo的IP核只允许选择偶数倍的byteFPGA series # vivado之添加switch和VIO核_第1张图片
也就是这里fifo的输入输出数据位没有24位可选。
要提一点,assign的等式左边必须得是wire型,reg型会报错。这一点以前是有注意的,很久没接触又忘了,其实wire和reg的用法还是有点混乱,先记下,来日得好好研究研究。

直接在block design里添加的VIO
FPGA series # vivado之添加switch和VIO核_第2张图片
VIO:virtual input output;其输出可以控制模块的输入,输入可以显示模块的输出。input可在chipscope里当按键触发。具体可以参考官方手册
输出接的siwtch,输入随手接了个信号,只要位数对应,并无影响。vio中右键信号进行设置toggle button。
FPGA series # vivado之添加switch和VIO核_第3张图片
value下的值即为button
2
3

你可能感兴趣的:(vivado)