最基本的verilog數碼管顯示程式,為啥不對啊

2022-01-15 02:09:02 字數 6176 閱讀 1194

1樓:匿名使用者

首先要檢查引腳有沒有鎖定對,然後要知道數碼管是是共陰極的還是共陽極的,然後看看位選是0有效還是1有效

module clock(clk,dig,seg);

input clk;

output wire[7:0]dig;

output wire[7:0]seg;

assign dig=8'b0;

assign seg=8'hf9;

endmodule

你後面發的那個程式計數器和d根本就沒用,如果不確定位選是0有效還是1有效就把dig=8'h10;

2樓:匿名使用者

就發個module啊?

3樓:匿名使用者

這是什麼東西 ,這能對嗎

最最基本的 verilog 數碼管顯示問題 (counter)

4樓:it_____民工

你這個程式都是錯的,而且感覺不完整,首先你的意思是上電以後數碼管就一直顯示8個1,那[31:0]d在這裡就根本沒有任何意義,你軟體裡面也沒有使用[31:0]d。

而且你的輸入輸出訊號都沒有定義究竟是線網型還是暫存器型。不過從後面看的話 你的輸出訊號應該是線網型。還有你是8位的數碼管,那麼你的seg訊號(應該是位選訊號)需要不斷的進行掃描切換,但是程式裡面沒有看見掃描的部分。

生成的原理圖裡面的counter應該是對應的你程式裡面定義的那個[31:0]d,但是沒有使用。

verilog 最基本數碼管顯示程式 reg的問題

5樓:天涯社論

怎樣確定段碼和位碼,和微控制器的段碼和位碼有什麼相同和不同?怎樣寫verilog程式

module sd(

input mclk,

output reg[3:0] x,

output reg [7:0] d

);reg [25:0]q;

reg [30:0]p;

wire ld;

[email protected](posedge mclk)p<=p+1;

assign ld=p[9];

[email protected](posedge ld)

begin

q<=q+1;

if(q%4==0)

begin

x=4'b1011;

d=8'b10100100;

endif(q%4==3)

begin

x=4'b1101;

d=8'b10110000;

endif(q%4==2)

begin

x=4'b1110;

d=8'b10011001;

endelse

begin

x=4'b0111;

d=8'b11111001;

endend

endmodule

但是隻有隻有1和4亮了,就是q%4==0和else中的結果,

verilog數碼管靜態顯示。。。。。。可以按照這程式給我說說它的執行過程嗎?

verilog中有關顯示數碼管的問題,很簡單~

6樓:匿名使用者

就那那種醜醜的七個hex display來說吧,你給他一個七位長的二級制,七位對應display上的七格,0就是亮,1就是不亮。(有的是反過來的)

http://en.wikipedia.org/wiki/seven-segment_display

拉倒下面看那個表啦

表裡的abcdefg對應的是七個segmentcode如下

module sevensegmentdisplaydecoder(ssout, nin);

output reg [6:0] ssout;

input [3:0] nin;

// ssout format

always @(nin)

case (nin)

4'h0: ssout = 7'b0111111;

4'h1: ssout = 7'b0000110;

4'h2: ssout = 7'b1011011;

4'h3: ssout = 7'b1001111;

4'h4: ssout = 7'b1100110;

4'h5: ssout = 7'b1101101;

4'h6: ssout = 7'b1111101;

4'h7: ssout = 7'b0000111;

4'h8: ssout = 7'b1111111;

4'h9: ssout = 7'b1100111;

4'ha: ssout = 7'b1110111;

4'hb: ssout = 7'b1111100;

4'hc: ssout = 7'b0111001;

4'hd: ssout = 7'b1011110;

4'he: ssout = 7'b1111001;

4'hf: ssout = 7'b1110001;

default: ssout = 7'b1001001;

endcase

endmodule

請問一下verilog怎樣寫數碼管顯示?

7樓:匿名使用者

1、首先設計數碼管各段連線數字埠。

2、然後設定 4~11 引腳為輸出模式。

3、接著建立顯示數字5函式。

4、然後主體顯示數字5。

5、然後延遲一秒。

6、最後建立顯示函式4。

7、主體顯示數字4,這樣就完成了數碼管顯示數字。

8樓:褐雨黑桐

分出兩個輸出埠,一個控制段碼一個是位碼控制,下面是個完整程式

//數碼管恆定顯示0到7

module seg2(clk,rst,dataout,en);

input clk,rst;

output wire [7:0] dataout;

output wire [7:0] en;

reg [15:0] cnt_scan;

reg [3:0] data4;

reg [7:0] dataout_xhdl1;

reg [7:0] en_xhdl;

assign dataout=dataout_xhdl1;

assign en=en_xhdl;

[email protected](posedge clk or negedge rst)

begin

if(rst==0)

cnt_scan<=16'b0; //清零

else

cnt_scan<=cnt_scan+1;

case(cnt_scan[15:13]) //數碼管使能端

0:en_xhdl<=8'b11111110;

1:en_xhdl<=8'b11111101;

2:en_xhdl<=8'b11111011;

3:en_xhdl<=8'b11110111;

4:en_xhdl<=8'b11101111;

5:en_xhdl<=8'b11011111;

6:en_xhdl<=8'b10111111;

7:en_xhdl<=8'b01111111;

default:en_xhdl<=8'b11111110;

endcase

case(en_xhdl) //數碼管對應到數字

8'b11111110:data4<=4'b0000;

8'b11111101:data4<=4'b0001;

8'b11111011:data4<=4'b0010;

8'b11110111:data4<=4'b0011;

8'b11101111:data4<=4'b0100;

8'b11011111:data4<=4'b0101;

8'b10111111:data4<=4'b0110;

8'b01111111:data4<=4'b0111;

default:data4<=4'b1000;

endcase

case(data4) //數碼管顯示數字

4'b0000:dataout_xhdl1<=8'b11000000;

4'b0001:dataout_xhdl1<=8'b11111001;

4'b0010:dataout_xhdl1<=8'b10100100;

4'b0011:dataout_xhdl1<=8'b10110000;

4'b0100:dataout_xhdl1<=8'b10011001;

4'b0101:dataout_xhdl1<=8'b10010010;

4'b0110:dataout_xhdl1<=8'b10000010;

4'b0111:dataout_xhdl1<=8'b11111000;

4'b1000:dataout_xhdl1<=8'b10000000;

4'b1001:dataout_xhdl1<=8'b00011001;

4'b1010:dataout_xhdl1<=8'b00010001;

4'b1011:dataout_xhdl1<=8'b11000001;

4'b1100:dataout_xhdl1<=8'b01100011;

4'b1101:dataout_xhdl1<=8'b10000101;

4'b1110:dataout_xhdl1<=8'b01100001;

4'b1111:dataout_xhdl1<=8'b01110001;

default:dataout_xhdl1<=8'b00000011;

endcase

endendmodule

用verilog程式設計,如何四個八位數碼管上顯示不同的數字? 50

9樓:yyy遊城十代

雖然是2014年的問題,但是我現在也遇到了這個麻煩,回答留在這幫助一下以後遇到這個問題的人。同時顯示不同的數我能想到一種方法,但是需要的是fpga的支援,這種方法需要在每個數碼管前面放一個鎖存器,用這個鎖存器向這個數碼管提供顯示資料,當需要修改數碼管顯示的時候,更新鎖存器內容就行了,這種方式也稱為直流法(直接驅動);還有一種不同時顯示但是可以給人一種同時顯示的感覺,那就是先顯示第一個,再顯示第二個,再顯示第三個,再顯示第四個,只要時間間隔夠短,在人們看來就是同時顯示,這種方法不需要鎖存器的支援,因為我們本來就是一次顯示一個,這種方式稱為動態掃描

10樓:匿名使用者

你咋還不懂呢,你四個管子輸出相同的原因在於你四個管子的輸入接的是一樣的,你想輸出不一樣只有二種辦法,一種是四份輸入分別接四個管子,一個是1份輸入擴大線寬,每個管子接不同的線位。也就是相當於一個mux。

我的fpga 數碼管靜態顯示0到7,verilog的!沒能實現!

11樓:匿名使用者

你的太囉嗦了

/********掃描函式*************/

[email protected](posedge clk1ms)

begin

if(number==5) number<=0;

else

begin

number<=number+1;

case(number)

4'd0:

begin

segdata<=leddata((tenvalue/10)%10);//個位

segcs<=4'b0001;

end4'd1:

begin

segdata<=leddata((tenvalue/100)%10);//十位

segcs<=4'b0010;

end4'd2:

begin

segdata<=leddata((tenvalue/1000)%10); //百位

segcs<=4'b0100;

end4'd3:

begin

segdata<=leddata(tenvalue/10000);//千位

segcs<=4'b1000;

end4'd4:

begin

segdata<=leddata(4'd11);//.

segcs<=4'b1000;

endendcase

endend