ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设置博客园代码高亮-Markdown编辑器

2022-07-24 23:02:28  阅读:154  来源: 互联网

标签:Markdown LOG type 博客园 source 编辑器 video b0 data


—————————————————————————————————————————————————————————————————————————————
原文地址:http://t.zoukankan.com/60late-p-9099156.html
—————————————————————————————————————————————————————————————————————————————
测试博客园代码高亮,效果如下:

module convertor
(
	clk_video,
	reset_n_video,
	video_data,
	video_hsync,
	video_vsync,
	video_valid,
	
	clk_st,
	reset_n_st,
 
	// streaming source
	source_data,
	source_valid,
	source_ready,
	source_sop,
	source_eop
);
input           clk_video;
input           reset_n_video;
input [23:0]    video_data;
input           video_hsync;
input           video_vsync;
input           video_valid;
 
input           clk_st;
input           reset_n_st;
// streaming source
output	[23:0]  source_data;
output			source_valid;
input			source_ready;
output			source_sop;
output			source_eop;
 
parameter WIDTH  = 640;
parameter HEIGHT = 480;
localparam CTRL_PKT_NUM     = 3;
localparam CTRL_PKT_HEADER  = 24'd15;
localparam DATA_PKT_HEADER  = 24'd0;
 
wire [10 :0] rdusedw_sig;
wire [23 :0] q_sig;
wire         rdreq_sig;
 
wire [15:0] w_LOG_WIDTH = WIDTH;
wire [15:0] w_LOG_HEIGHT = HEIGHT;
///
reg [2:0] dout_data_type;
reg [2:0] ctrl_data_type;
reg [11:0] dot_cnt;
reg [11:0] line_cnt;
wire rdempty_sig;
assign source_data = (dout_data_type[2:0] == 3'd0) ? q_sig:
                   (dout_data_type[2:0] == 3'd1) ? CTRL_PKT_HEADER:
                   (dout_data_type[2:0] == 3'd2) ? { 4'b0,  w_LOG_WIDTH[ 7: 4], 4'b0,  w_LOG_WIDTH[11: 8], 4'b0,  w_LOG_WIDTH[15:12] }:
                   (dout_data_type[2:0] == 3'd3) ? { 4'b0,  w_LOG_HEIGHT[11: 8], 4'b0, w_LOG_HEIGHT[15:12], 4'b0,  w_LOG_WIDTH[ 3: 0] }:
                   (dout_data_type[2:0] == 3'd4) ? { 4'b0,            4'b0, 4'b0, w_LOG_HEIGHT[ 3: 0], 4'b0, w_LOG_HEIGHT[ 7: 4] }:
                   (dout_data_type[2:0] == 3'd5) ? DATA_PKT_HEADER:
						 q_sig;
assign source_valid = source_ready & (dout_data_type[2:0] >= 3'd1 && dout_data_type[2:0] <= 3'd5 ) | source_ready & rdreq_sig;
						 
assign 	rdreq_sig =  source_ready & (dout_data_type[2:0] == 3'd0) & !rdempty_sig;			 
///
// State Machine
//reg     out;
reg  [1:0]   pkt_state;
        
localparam STATE_CTRL_PKT_SOP = 0;
localparam STATE_CTRL_PKT_DAT = 1;
localparam STATE_DATA_PKT_SOP = 2;
localparam STATE_DATA_PKT_DAT = 3;
 
 
 
wire ctrl_pkt_sop = (pkt_state == STATE_CTRL_PKT_SOP ) ? 1 : 0 ;
wire ctrl_pkt_eop = ((pkt_state == STATE_CTRL_PKT_DAT) & (dot_cnt==(CTRL_PKT_NUM-1))  ) ? 1 : 0 ; 
 
 
wire data_pkt_sop = (pkt_state == STATE_DATA_PKT_SOP ) ? 1 : 0 ;
wire data_pkt_eop = ((pkt_state == STATE_DATA_PKT_DAT) & (dot_cnt==(WIDTH-1)) & (line_cnt==(HEIGHT-1))  ) ? 1 : 0 ;
 
always @ (posedge clk_st) begin
  if (!reset_n_st)  pkt_state <= STATE_CTRL_PKT_SOP; 
  else 
    case (pkt_state) // state transitions
        STATE_CTRL_PKT_SOP: if (source_ready)  pkt_state <= STATE_CTRL_PKT_DAT;
        STATE_CTRL_PKT_DAT: if (source_ready & ctrl_pkt_eop)  pkt_state <= STATE_DATA_PKT_SOP;
        STATE_DATA_PKT_SOP: if (source_ready)  pkt_state <= STATE_DATA_PKT_DAT;
        STATE_DATA_PKT_DAT: if (source_ready & data_pkt_eop)  pkt_state <= STATE_CTRL_PKT_SOP;
        default :  pkt_state = STATE_CTRL_PKT_DAT;
    endcase
end		
 
// sop and eop signals
assign source_sop = (ctrl_pkt_sop | data_pkt_sop) ;
assign source_eop = (ctrl_pkt_eop | data_pkt_eop) ;	
/
// dot and line counter
always @(posedge clk_st) begin
  if (!reset_n_st) begin
     dot_cnt <= 0;
  end
  else begin
    if (source_ready)
      if ((pkt_state == STATE_DATA_PKT_DAT) ) begin
	    if(rdreq_sig)
			if ( dot_cnt < (WIDTH-1) )
			   dot_cnt <= dot_cnt + 11'd1;
			else
			  dot_cnt <= 0;
      end
      else if ((pkt_state == STATE_CTRL_PKT_DAT) )begin // control packet
        if ( dot_cnt < (CTRL_PKT_NUM-1) )
           dot_cnt <= dot_cnt + 11'd1;
        else
           dot_cnt <= 0;
      end
  end
end
 
always @(posedge clk_st) begin
  if (!reset_n_st) begin
     line_cnt <= 0;
  end
  else begin
    if (source_ready)begin
      if (pkt_state == STATE_DATA_PKT_DAT) begin
 	    if(rdreq_sig)
			if ( dot_cnt == (WIDTH-1) )  begin
			  if ( line_cnt < (HEIGHT-1) )
				 line_cnt <= line_cnt + 11'd1;
			  else
				 line_cnt <= 0;
			end
      end
      else
           line_cnt <= 0;
    end
  end
end
 
 
///
// Making Final Output Data
always @(pkt_state or ctrl_data_type ) begin
  case (pkt_state) 
     STATE_CTRL_PKT_SOP: dout_data_type = {3'd1};//CTRL_PKT_HEADER;
     STATE_CTRL_PKT_DAT: dout_data_type = {ctrl_data_type};//ctrl_data_type;
     STATE_DATA_PKT_SOP: dout_data_type = {3'd5};//DATA_PKT_HEADER;
     default:            dout_data_type = {3'd0};//image_data; 
  endcase
end
 
always @(dot_cnt[3:0]) begin
  case (dot_cnt[3:0])
    0 : ctrl_data_type = 3'd2;//{ 4'b0,  w_LOG_WIDTH[ 7: 4], 4'b0,  w_LOG_WIDTH[11: 8], 4'b0,  w_LOG_WIDTH[15:12] };
    1 : ctrl_data_type = 3'd3;//{ 4'b0, w_LOG_HEIGHT[11: 8], 4'b0, w_LOG_HEIGHT[15:12], 4'b0,  w_LOG_WIDTH[ 3: 0] };
    2 : ctrl_data_type = 3'd4;//{ 4'b0,            4'b0, 4'b0, w_LOG_HEIGHT[ 3: 0], 4'b0, w_LOG_HEIGHT[ 7: 4] };
    default : ctrl_data_type = 3'd0;//24'bx;
  endcase
end
			 
 output data path -- fifo //
 
reg[1:0] video_vsync_r;	
 
always @(posedge clk_video )
	if(!reset_n_video) video_vsync_r <= 2'd0;
	else video_vsync_r <= {video_vsync_r[0],video_vsync};
 
wire fifo_clr = ~video_vsync_r[1] & video_vsync_r[0];	//
pixel_fifo	pixel_fifo_inst (
	.aclr (fifo_clr),
	.data ( video_data ),
	.rdclk ( clk_st ),
	.rdreq ( rdreq_sig ),
	.wrclk ( clk_video ),
	.wrreq ( video_valid ),
	.q ( q_sig ),
	.rdempty ( rdempty_sig ),
	.rdfull ( rdfull_sig ),
	.rdusedw ( rdusedw_sig ),
	.wrempty ( wrempty_sig ),
	.wrfull ( wrfull_sig ),
	.wrusedw ( wrusedw_sig )
	);
 
	
	
endmodule

—————————————————————————————————————————————————————————————————————————————

标签:Markdown,LOG,type,博客园,source,编辑器,video,b0,data
来源: https://www.cnblogs.com/SeniorRookie/p/16515771.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有