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;
always@(posedge mclk)p<=p+1;
assign ld=p[9];
always@(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就是不亮。(有的是反過來的)
拉倒下面看那個表啦
表裡的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;
always@(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遊城十代
雖然是2023年的問題,但是我現在也遇到了這個麻煩,回答留在這幫助一下以後遇到這個問題的人。同時顯示不同的數我能想到一種方法,但是需要的是fpga的支援,這種方法需要在每個數碼管前面放乙個鎖存器,用這個鎖存器向這個數碼管提供顯示資料,當需要修改數碼管顯示的時候,更新鎖存器內容就行了,這種方式也稱為直流法(直接驅動);還有一種不同時顯示但是可以給人一種同時顯示的感覺,那就是先顯示第乙個,再顯示第二個,再顯示第三個,再顯示第四個,只要時間間隔夠短,在人們看來就是同時顯示,這種方法不需要鎖存器的支援,因為我們本來就是一次顯示乙個,這種方式稱為動態掃瞄
10樓:匿名使用者
你咋還不懂呢,你四個管子輸出相同的原因在於你四個管子的輸入接的是一樣的,你想輸出不一樣只有二種辦法,一種是四份輸入分別接四個管子,乙個是1份輸入擴大線寬,每個管子接不同的線位。也就是相當於乙個mux。
我的fpga 數碼管靜態顯示0到7,verilog的!沒能實現!
11樓:匿名使用者
你的太囉嗦了
/********掃瞄函式*************/
always@(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
我用矩陣按鍵來控制數碼管,顯09,但程序實際運無反映,請高手指導
void keyscan while temp 0xf0 flag flag 1 p2 0xfd temp p2 temp temp 0xf0 while temp 0xf0 while temp 0xf0 flag flag 1 p2 0xfb temp p2 temp temp 0xf0 whi...
微控制器的數碼管是共陰極還是共陽極?蜂鳴器接那
從這個圖還看不出來,還應該有圖啊,數碼管的公共極接哪了,要看另外的圖。估計是有一片74hc138解碼器做數碼管的位控。這樣的話,數碼管就是共陰的。你自己也可以在其它圖找,有74hc138沒。x x x x x x b b b b b b b b b b b b b 微控制器裡數碼管的共陰極和共陽極是...
求 數碼管動態顯示0到99的匯程式設計序
a bit equ 20h 數碼管個位數存放記憶體位置 b bit equ 21h 數碼管十位數存放記憶體位置 temp equ 22h 計數器數值存放記憶體位置 star mov temp,0 初始化計數器,從0開始 stlop acall display 呼叫顯示子程式 acall del in...