? ? ? ? TMDS協(xié)議是當(dāng)下很重的一個(gè)視頻傳輸協(xié)議,DVI以及HDMI均采用該協(xié)議進(jìn)行視頻數(shù)據(jù)的轉(zhuǎn)化和傳輸。
? ? ? ? TMDS編碼部分如下:
?通過該模塊可將8bit視頻像素?cái)?shù)據(jù)轉(zhuǎn)為10bit。具體的轉(zhuǎn)化流程圖可自行搜索,算法并不復(fù)雜。
Testbench:
`timescale 1ns / 1ps
//
module tb;
// encoder1 Parameters
parameter PERIOD = 10 ;
parameter CTRL3 = 10'b0010101010;
// encoder1 Inputs
reg [7:0] Blue_in = 0 ;
reg sys_clk = 0 ;
reg sys_rst = 0 ;
reg de = 0 ;
reg hsync = 0 ;
reg vsync = 0 ;
// encoder1 Outputs
wire [9:0] Blue_out ;
encoder encoderu0(
.Blue_in ( Blue_in ),
.sys_clk ( sys_clk ),
.sys_rst ( sys_rst ),
.de ( de ),
.hsync ( hsync ),
.vsync ( vsync ),
.Blue_out ( Blue_out )
);
initial
begin
Blue_in = 8'b10110101;
de = 1'b1;
hsync = 1'b1;
vsync = 1'b1;
end
initial
begin
forever #(PERIOD/2) sys_clk=~sys_clk;
end
initial
begin
#(PERIOD*2) sys_rst = 1;
end
endmodule
這里的輸入信號(hào)是8‘b10110101,在后續(xù)的解碼部分可以進(jìn)行對(duì)照?。
解碼部分RTL:
?Testbench:
`timescale 1ns / 1ps
//
module tb;
// jiema Parameters
parameter PERIOD = 10;
// jiema Inputs
reg sys_clk = 0 ;
reg sys_rst = 0 ;
reg [9:0] Blue_out = 0 ;
// jiema Outputs
wire [7:0] data ;
initial
begin
Blue_out = 10'b1011000110;
forever #(PERIOD/2) sys_clk=~sys_clk;
end
initial
begin
#(PERIOD/2) sys_rst = 1;
end
jiema u_jiema (
.sys_clk ( sys_clk ),
.sys_rst ( sys_rst ),
.Blue_out ( Blue_out [9:0] ),
.data ( data [7:0] )
);
initial
begin
$finish;
end
endmodule
解碼后仿真波形圖如下:
文章來源:http://www.zghlxwxcb.cn/news/detail-706764.html
?可以看到解碼后的數(shù)據(jù)data=8'b10110101,與最初的輸入數(shù)據(jù)保持一致。(發(fā)csdn就是想記錄自己的學(xué)習(xí)進(jìn)程,大佬勿噴)。文章來源地址http://www.zghlxwxcb.cn/news/detail-706764.html
到了這里,關(guān)于FPGA學(xué)習(xí):TMDS協(xié)議編碼與解碼測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!