設(shè)計(jì)規(guī)劃
設(shè)計(jì)一個(gè)8位數(shù)碼管靜態(tài)顯示:采用共陽(yáng)極(低電平點(diǎn)亮)8段數(shù)碼管,控制八位數(shù)碼管讓其以00000000、11111111、22222222一直到FFFFFFFF循環(huán)顯示。每個(gè)字符顯示0.5s。
硬件資源
數(shù)碼管
常見(jiàn)數(shù)碼管分為七段或八段,八段是多一個(gè)小數(shù)點(diǎn)。也可分為共陰極或共陽(yáng)極,觀察下面的原理圖,共陰極數(shù)碼管對(duì)應(yīng)端口為高電平時(shí)對(duì)應(yīng)二極管點(diǎn)亮,共陽(yáng)極則相反。
段式數(shù)碼管工作方式有兩種:靜態(tài)顯示和動(dòng)態(tài)顯示。靜態(tài)顯示是指將8個(gè)數(shù)碼管的段選信號(hào)連接在一起,就可以顯示相同的數(shù)字。每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線來(lái)顯示字形,顯示字形可一直保持,直到送入新字形碼為止。如果每個(gè)數(shù)碼管都接8位段選數(shù)據(jù)線,那么8個(gè)數(shù)碼管就需要64根數(shù)據(jù)線。(例如8個(gè)數(shù)碼管都顯示0,那么每個(gè)數(shù)碼管都要接一個(gè)8位的段選數(shù)據(jù)線,且控制段選信號(hào)為1100_0000)這樣占用的I/O接口太多。如下圖所示,我們將8個(gè)數(shù)碼管的段選信號(hào)連接在一起,由位選信號(hào)去控制,每一個(gè)數(shù)碼管上都有一個(gè)位選信號(hào)。那么在同一時(shí)刻8個(gè)數(shù)碼管顯示的字符都一樣了。(例如8個(gè)數(shù)碼管都顯示0,那么8位位選信號(hào)為1111_1111,這樣才能控制8個(gè)共陽(yáng)數(shù)碼管都能點(diǎn)亮。段選信號(hào)是連接在一起的,當(dāng)它為1100_0000時(shí),8個(gè)數(shù)碼管都顯示0)
即使這樣控制數(shù)碼管仍然需要使用16個(gè)I/O口資源。如果想要節(jié)省I/O口,可以通過(guò)74HC595芯片(位移緩存器)來(lái)實(shí)現(xiàn)。
74HC595芯片
使用一個(gè)串行輸入口就可以并行輸出八個(gè)輸入的串行數(shù)據(jù)。但是一片芯片只能并行輸出8位數(shù)據(jù),但是8個(gè)數(shù)碼管需要16位數(shù)據(jù)線,因此需要級(jí)聯(lián)兩片74HC595芯片進(jìn)行輸出:將Q7S引腳接入下一片的DS引腳,這樣我們最少使用3個(gè)I/O口就可以控制多片芯片了。
10號(hào)引腳是主復(fù)位,低電平有效將移位寄存器的數(shù)據(jù)清零,通常接到Vcc防止數(shù)據(jù)清零。SHCP為移位寄存器時(shí)鐘輸入,上升沿時(shí)將輸入的串行數(shù)據(jù)(DS端輸入)移入移位寄存器中。如果一次輸入的數(shù)據(jù)超過(guò)8bit,后面的數(shù)據(jù)會(huì)通過(guò)Q7S端口傳到下一級(jí)芯片的DS端口。74HC595內(nèi)部有一個(gè)8位 存儲(chǔ)寄存器 ,由STCP(存儲(chǔ)寄存器時(shí)鐘)控制,STCP上升沿時(shí)移位寄存器的數(shù)據(jù)會(huì)進(jìn)入數(shù)據(jù)存儲(chǔ)寄存器中,令第13引腳為低即可讓存儲(chǔ)寄存器中的數(shù)據(jù)進(jìn)行輸出。
總結(jié)一下使用步驟:
- 首先把要傳輸?shù)臄?shù)據(jù)通過(guò)引腳DS輸入到74HC595中。
- 產(chǎn)生SHCP時(shí)鐘,將DS上的數(shù)據(jù)串行移入移位寄存器。
- 產(chǎn)生STCP時(shí)鐘,將移位寄存器里的數(shù)據(jù)送入存儲(chǔ)寄存器。
- 將13引腳置為低電平,存儲(chǔ)寄存器的數(shù)據(jù)會(huì)在Q0-Q7并行輸出,同時(shí)并行輸出的數(shù)據(jù)會(huì)被鎖存起來(lái)。
AC620 開(kāi)發(fā)板上的數(shù)碼管采用串行移位寄存器芯片將串行數(shù)據(jù)轉(zhuǎn)化為 16 位并行數(shù)據(jù)后進(jìn)行驅(qū)動(dòng)。Cyclone IV E 通過(guò) 3 根數(shù)據(jù)線,連接到兩片級(jí)聯(lián)的串行移位器芯片 74HC595 上,再由 74HC595 將每次 16 位串行的數(shù)據(jù)轉(zhuǎn)化為 16 位并行的數(shù)據(jù),分別用以驅(qū)動(dòng)8 段 8 位數(shù)碼管的段選和位選。(用戶手冊(cè)是7段,但是有小數(shù)點(diǎn),這里統(tǒng)一稱為8段)
我們采用的是低電平點(diǎn)亮的共陽(yáng)極數(shù)碼管。首先看位選信號(hào),SEL[0]對(duì)應(yīng)開(kāi)發(fā)板最右側(cè)的數(shù)碼管,以此類(lèi)推。位選信號(hào)為1111_1111才能點(diǎn)亮數(shù)碼管。再看段選信號(hào),以顯示0為例,需要將abcdef點(diǎn)亮,按照左邊高位右邊低位的順序,dp、g、f、e、d、c、b、a就對(duì)應(yīng)1100_0000。0-F對(duì)應(yīng)(0)1100_0000、(1)1111_1001、(2)1010_0100、(3)1011_0000、(4)1001_1001、(5)1001_0010、(6)1000_0010、(7)1111_1000、(8)1000_0000、(9)1001_0000、(A)1000_1000、(B)1000_0011、(C)1100_0110、(D)1010_0001、(E)1000_0110、(F)1000_1110。
編寫(xiě)代碼
通過(guò)系統(tǒng)框圖可以看出,分為3個(gè)模塊:數(shù)碼管驅(qū)動(dòng)模塊,芯片控制模塊和數(shù)碼管顯示模塊。數(shù)碼管顯示模塊是 頂層模塊 ,實(shí)質(zhì)上完成兩個(gè)子模塊的實(shí)例化。上圖里整個(gè)系統(tǒng)連接方式是Cyclone IV E連接74HC595芯片連接數(shù)碼管。我們看數(shù)碼管驅(qū)動(dòng)和芯片控制這兩個(gè)子模塊,下圖中數(shù)碼管的引腳圖需要段選信號(hào)和位選信號(hào)去驅(qū)動(dòng),74HC595芯片,除了幾個(gè)常接高低電平的引腳外,它的輸入引腳是接Cyclone IV E的,輸出引腳是控制數(shù)碼管的。頂層模塊中只需要考慮芯片和Cyclone IV E之間的連線,因此頂層模塊的輸入是時(shí)鐘和復(fù)位信號(hào),輸出是芯片的輸入引腳:寄存器時(shí)鐘,存儲(chǔ)器時(shí)鐘,數(shù)據(jù)輸入。尤其要注意的是,因?yàn)槲矣玫拈_(kāi)發(fā)板沒(méi)有使能引腳,他不能作為輸出存在。我們?cè)賹㈨攲幽K拆分為數(shù)碼管驅(qū)動(dòng)模塊和芯片控制模塊。數(shù)碼管驅(qū)動(dòng)模塊考慮數(shù)碼管和芯片之間的連線,因此它的輸入是時(shí)鐘和復(fù)位信號(hào),輸出是段選和位選信號(hào)。芯片控制模塊考慮的是芯片和數(shù)碼管以及Cyclone IV E的連線,因此它的輸入是時(shí)鐘、復(fù)位、段選和位選信號(hào),使能信號(hào),輸出是芯片的輸入引腳(寄存器時(shí)鐘,存儲(chǔ)器時(shí)鐘,數(shù)據(jù)輸入)。理清楚了這些,就很容易編寫(xiě)代碼了。
1、數(shù)碼管驅(qū)動(dòng)模塊seg_static
包括輸入:時(shí)鐘信號(hào)、復(fù)位信號(hào),輸出:段選信號(hào)和位選信號(hào)。這個(gè)模塊最重要的是弄清楚怎么產(chǎn)生段選和位選信號(hào)。每隔0.5s,我們要實(shí)現(xiàn)00000000-FFFFFFFF的循環(huán)顯示,那么位選信號(hào)我們之前探討了必須為1111_1111才能使數(shù)碼管正常工作,而段選信號(hào)我們也探討了從0-F的段選信號(hào),就可以畫(huà)出波形圖。根據(jù)波形圖可以編寫(xiě)代碼。
我們需要三個(gè)中間信號(hào):計(jì)數(shù)器cnt_wait,標(biāo)志信號(hào)add_flag,顯示信號(hào)num。其中,cnt_wait從0計(jì)數(shù)到24999999即0.5s,每到計(jì)滿時(shí)標(biāo)志信號(hào)add_flag拉高,且顯示信號(hào)跳轉(zhuǎn)到下一個(gè)狀態(tài),顯示信號(hào)需要從0-F循環(huán)。
module seg_static
(
input wire sys_clk ,
input wire sys_rst_n ,
output reg [7:0] sel ,
output reg [7:0] seg
);
//parameter define
parameter CNT_WAIT_MAX = 25'd24_999_999; //計(jì)數(shù)器最大值(0.5s)
//十六進(jìn)制數(shù)顯示編碼
parameter SEG_0 = 8'b1100_0000, SEG_1 = 8'b1111_1001,
SEG_2 = 8'b1010_0100, SEG_3 = 8'b1011_0000,
SEG_4 = 8'b1001_1001, SEG_5 = 8'b1001_0010,
SEG_6 = 8'b1000_0010, SEG_7 = 8'b1111_1000,
SEG_8 = 8'b1000_0000, SEG_9 = 8'b1001_0000,
SEG_A = 8'b1000_1000, SEG_B = 8'b1000_0011,
SEG_C = 8'b1100_0110, SEG_D = 8'b1010_0001,
SEG_E = 8'b1000_0110, SEG_F = 8'b1000_1110;
parameter IDLE = 8'b1111_1111; //不顯示狀態(tài)
//reg define
reg add_flag ;
reg [24:0] cnt_wait ;
reg [3:0] num ;
//cnt_wait:0.5秒計(jì)數(shù)
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
cnt_wait <= 25'd0;
else if(cnt_wait == CNT_WAIT_MAX)
cnt_wait <= 25'd0;
else
cnt_wait <= cnt_wait + 1'b1;
//add_flag:0.5s拉高一個(gè)標(biāo)志信號(hào)
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
add_flag <= 1'b0;
else if(cnt_wait == CNT_WAIT_MAX - 1)
add_flag <= 1'b1;
else
add_flag <= 1'b0;
//num:從 4'h0 加到 4'hf 循環(huán)
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
num <= 4'd0;
else if(add_flag == 1'b1)
num <= num + 1'b1;
else
num <= num;
//sel:選中8個(gè)數(shù)碼管
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
sel <= 8'b00000000;
else
sel <= 8'b11111111;
//給要顯示的值編碼
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
seg <= IDLE;
else case(num)
4'd0: seg <= SEG_0;
4'd1: seg <= SEG_1;
4'd2: seg <= SEG_2;
4'd3: seg <= SEG_3;
4'd4: seg <= SEG_4;
4'd5: seg <= SEG_5;
4'd6: seg <= SEG_6;
4'd7: seg <= SEG_7;
4'd8: seg <= SEG_8;
4'd9: seg <= SEG_9;
4'd10: seg <= SEG_A;
4'd11: seg <= SEG_B;
4'd12: seg <= SEG_C;
4'd13: seg <= SEG_D;
4'd14: seg <= SEG_E;
4'd15: seg <= SEG_F;
default:seg <= IDLE ; //閑置狀態(tài),不顯示
endcase
endmodule
計(jì)數(shù)器cnt_wait:0.5s計(jì)數(shù)器,計(jì)數(shù)值從0-24_999_999。復(fù)位有效時(shí)歸0,計(jì)數(shù)到24_999_999計(jì)滿時(shí)歸0,其他情況+1。
標(biāo)志信號(hào)add_flag:計(jì)滿0.5s拉高一個(gè)脈沖,復(fù)位有效時(shí)歸0,計(jì)數(shù)到24_999_999-1時(shí)拉高,其他情況歸0。
顯示信號(hào)num:每當(dāng)標(biāo)志信號(hào)拉高時(shí)從0-F循環(huán),復(fù)位有效時(shí)歸0,判斷標(biāo)志信號(hào)為高電平時(shí)+1(F是1111,+1為10000溢出,但只保留后四位0000,因此F的下一個(gè)狀態(tài)還是0),其他情況保持原值。
位選信號(hào)sel:位選信號(hào)長(zhǎng)期接高點(diǎn)平,數(shù)碼管才能顯示,因此復(fù)位有效時(shí)歸0,其他情況都為高電平。
段選信號(hào)seg:段選信號(hào)與顯示數(shù)值的對(duì)應(yīng)關(guān)系之前已經(jīng)討論過(guò)了。除了0-F的16種顯示情況外增加了一種不顯示的閑置狀態(tài)IDLE。復(fù)位有效時(shí)段選信號(hào)為IDLE,與num數(shù)值有關(guān)。使用CASE語(yǔ)句判斷num值并將對(duì)應(yīng)的參數(shù)賦值給段選信號(hào)seg,注意要有default語(yǔ)句。
2、芯片控制模塊
包括輸入:時(shí)鐘信號(hào)、復(fù)位信號(hào),段選信號(hào),位選信號(hào),輸出使能,輸出:芯片的四個(gè)輸入引腳(寄存器時(shí)鐘,存儲(chǔ)器時(shí)鐘,數(shù)據(jù)輸入)。這個(gè)模塊最重要的是弄清楚怎么通過(guò)控制Cyclone IV E和芯片連接的引腳,讓芯片產(chǎn)生正確的輸出,去驅(qū)動(dòng)數(shù)碼管正確的顯示圖形。
注意:對(duì)于我使用的開(kāi)發(fā)板,沒(méi)有oe對(duì)應(yīng)引腳,它是作為輸入信號(hào)存在的(可閱讀https://blog.csdn.net/weixin_43614528/article/details/87878938?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%2287878938%22%2C%22source%22%3A%22unlogin%22%7D)74HC595驅(qū)動(dòng)模塊觀察其代碼。而對(duì)于征途開(kāi)發(fā)板,使能引腳為L(zhǎng)11。
shcp是寄存器時(shí)鐘,上升沿時(shí)數(shù)據(jù)寫(xiě)入移位寄存器,它有頻率限制,這里采用系統(tǒng)時(shí)鐘的4分頻,即12.5MHz。stcp是存儲(chǔ)器時(shí)鐘,串行輸入16位之后拉高。 en是使能信號(hào),需要一直維持高電平 (圖中的使能信號(hào)oe剛好相反,這與開(kāi)發(fā)板有關(guān),因此要仔細(xì)閱讀用戶手冊(cè))。
module hc595_ctrl
(
input wire sys_clk ,
input wire sys_rst_n ,
input wire [7:0] sel ,
input wire [7:0] seg ,
input wire en ,
output reg stcp ,
output reg shcp ,
output reg ds
);
//reg define
reg [1:0] cnt_4 ; //分頻計(jì)數(shù)器
reg [3:0] cnt_bit ; //傳輸位數(shù)計(jì)數(shù)器
//wire define
wire [15:0] data ; //數(shù)碼管信號(hào)寄存
//將數(shù)碼管信號(hào)寄存
assign data={sel,seg[0],seg[1],seg[2],seg[3],seg[4],seg[5],seg[6],seg[7]};
//分頻計(jì)數(shù)器:0~3循環(huán)計(jì)數(shù)
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
cnt_4 <= 2'd0;
else if(cnt_4 == 2'd3)
cnt_4 <= 2'd0;
else
cnt_4 <= cnt_4 + 1'b1;
//cnt_bit:每輸入一位數(shù)據(jù)加一
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
cnt_bit <= 4'd0;
else if(cnt_4 == 2'd3 && cnt_bit == 4'd15)
cnt_bit <= 4'd0;
else if(cnt_4 == 2'd3)
cnt_bit <= cnt_bit + 1'b1;
else
cnt_bit <= cnt_bit;
//stcp:14個(gè)信號(hào)傳輸完成之后產(chǎn)生一個(gè)上升沿
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
stcp <= 1'b0;
else if(cnt_bit == 4'd15 && cnt_4 == 2'd3)
stcp <= 1'b1;
else
stcp <= 1'b0;
//shcp:產(chǎn)生四分頻移位時(shí)鐘
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
shcp <= 1'b0;
else if(cnt_4 >= 4'd2)
shcp <= 1'b1;
else
shcp <= 1'b0;
//ds:將寄存器里存儲(chǔ)的數(shù)碼管信號(hào)輸入即
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
ds <= 1'b0;
else if(cnt_4 == 2'd0)
ds <= data[cnt_bit];
else
ds <= ds;
endmodule
使能信號(hào)en:在這里沒(méi)有給他賦值,而在頂層模塊的實(shí)例化時(shí)接了高電平。
分頻計(jì)數(shù)器cnt_4:4分頻即0-3循環(huán)計(jì)數(shù),復(fù)位有效時(shí)歸0,計(jì)數(shù)到3計(jì)滿時(shí)歸0,其他情況+1。
傳輸位數(shù)計(jì)數(shù)器cnt_bit:每傳輸一個(gè)數(shù)據(jù)+1,0-15循環(huán)計(jì)數(shù)。由于分頻之后四個(gè)時(shí)鐘周期為一個(gè)新的時(shí)鐘周期,一個(gè)新時(shí)鐘周期傳輸一個(gè)數(shù)據(jù)。復(fù)位有效時(shí)歸0,當(dāng)cnt計(jì)數(shù)到3且cnt_bit計(jì)數(shù)到15計(jì)滿時(shí)歸0,cnt計(jì)數(shù)到3且cnt_bit沒(méi)計(jì)滿時(shí)+1,其他情況保持。
存儲(chǔ)器時(shí)鐘stcp:15個(gè)信號(hào)傳輸完成后拉高,復(fù)位有效時(shí)歸0,當(dāng)cnt計(jì)數(shù)到3且cnt_bit計(jì)數(shù)到15計(jì)滿時(shí)拉高,其他情況保持低電平。
寄存器時(shí)鐘shcp:第九節(jié)分頻器中僅分頻的分頻器實(shí)現(xiàn)方法,4分頻后的時(shí)鐘脈沖周期是原來(lái)的4倍。復(fù)位有效時(shí)歸0,計(jì)數(shù)大于等于2(2,3)時(shí)拉高,其他情況(0,1)拉低。
串行數(shù)據(jù)輸出ds:對(duì)FPGA芯片來(lái)說(shuō)是輸出,對(duì)74HC595芯片來(lái)說(shuō)是輸入。復(fù)位有效時(shí)歸0,當(dāng)分頻計(jì)數(shù)器計(jì)數(shù)值為0時(shí)開(kāi)始傳輸數(shù)據(jù),其他情況保持原值。傳輸?shù)臄?shù)據(jù)是FPGA芯片輸出的16位數(shù)據(jù),74HC595芯片會(huì)串行輸出(一次輸出1bit)。數(shù)據(jù)data是seg[0]...seg[7],sel拼接起來(lái)的,sel是從高位到低位的順序,data[cnt_bit]是從低位到高位的輸出,因此是從位選的低位到高位,再?gòu)亩芜x的高位到低位依次輸出。
3、頂層模塊
module seg_595_static
(
input wire sys_clk ,
input wire sys_rst_n ,
output wire stcp ,
output wire shcp ,
output wire ds
);
//wire define
wire [7:0] sel;
wire [7:0] seg;
//---------- seg_static_inst ----------
seg_static seg_static_inst
(
.sys_clk (sys_clk ),
.sys_rst_n (sys_rst_n ),
.sel (sel ),
.seg (seg )
);
//---------- hc595_ctrl_inst ----------
hc595_ctrl hc595_ctrl_inst
(
.sys_clk (sys_clk ),
.sys_rst_n (sys_rst_n),
.sel (sel ),
.seg (seg ),
.en(1'b1),
.stcp (stcp ),
.shcp (shcp ),
.ds (ds )
);
endmodule
頂層模塊實(shí)質(zhì)是兩個(gè)實(shí)例化。
編寫(xiě)testbench
`timescale 1ns/1ns
module tb_seg_595_static();
//wire define
wire stcp ; //輸出數(shù)據(jù)存儲(chǔ)寄時(shí)鐘
wire shcp ; //移位寄存器的時(shí)鐘輸入
wire ds ; //串行數(shù)據(jù)輸入
wire oe ; //輸出使能信號(hào)
//reg define
reg sys_clk ;
reg sys_rst_n ;
//對(duì)sys_clk,sys_rst_n賦初始值
initial
begin
sys_clk = 1'b1;
sys_rst_n <= 1'b0;
#100
sys_rst_n <= 1'b1;
end
//clk:產(chǎn)生時(shí)鐘
always #10 sys_clk <= ~sys_clk;
//重新定義參數(shù)值,縮短仿真時(shí)間
defparam seg_595_static_inst.seg_static_inst.CNT_WAIT_MAX = 100;
//-------------seg_595_static_inst-------------
seg_595_static seg_595_static_inst(
.sys_clk (sys_clk ), //系統(tǒng)時(shí)鐘,頻率50MHz
.sys_rst_n (sys_rst_n ), //復(fù)位信號(hào),低電平有效
.stcp (stcp ), //輸出數(shù)據(jù)存儲(chǔ)寄時(shí)鐘
.shcp (shcp ), //移位寄存器的時(shí)鐘輸入
.ds (ds ), //串行數(shù)據(jù)輸入
.oe (oe ) //輸出使能信號(hào)
);
endmodule
初始化:對(duì)時(shí)鐘信號(hào)和復(fù)位信號(hào)賦初值,延遲100ns后復(fù)位拉高。
產(chǎn)生時(shí)鐘:延遲10ns后取反,周期為20ns,50MHz的時(shí)鐘。
為了節(jié)省仿真時(shí)間,重新定義參數(shù)。當(dāng)一個(gè)模塊引用另外一個(gè)模塊時(shí),高層模塊可以改變低層模塊用parameter定義的參數(shù)值。低層模塊的參數(shù)可以通過(guò)層次路徑名重新定義。
實(shí)例化
對(duì)比波形
數(shù)碼管靜態(tài)驅(qū)動(dòng)模塊仿真波形圖
這里看模塊的波形,可以把原來(lái)的波形delete,再把想要的如圖添加進(jìn)去。后面要修改可以restart后break再重新run all。
可以看到數(shù)碼顯示的值(num)從0開(kāi)始跳轉(zhuǎn)到了1,再跳轉(zhuǎn)到了2;同時(shí)段選信號(hào)(seg)的編碼與顯示的字符也相吻合
可以看到數(shù)碼管顯示的數(shù)值從4’hf跳轉(zhuǎn)回0
74HC595控制模塊仿真波形圖
分配管腳
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603419 -
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120375 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91124 -
靜態(tài)顯示
+關(guān)注
關(guān)注
0文章
19瀏覽量
6001
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論