㈠ 用verilog語言設計一個六位數碼管動態顯示從左到右為123456
下面是一個簡單的 Verilog HDL 代碼,可以實現六位數碼管動態顯示從左到右為123456的效果。
mole six_digit_display(clk, reset, digit_out);
// 輸入信號
input clk; // 時鍾信號
input reset; // 復位信號
// 輸出信號
output [5:0] digit_out; // 數碼管輸出信號
// 內部信號
reg [26:0] counter; // 計數器
// 顯示的數字
reg [5:0] digit [0:5] = {6'b000000, 6'b000001, 6'b000010, 6'b000011, 6'b000100, 6'b000101};
always @(posedge clk or negedge reset) begin
if (reset == 0) begin
counter <= 0;
digit_out <= 6'b000000;
end else begin
counter <= counter + 1;
digit_out <= digit[counter[25:20]];
end
end
endmole
在這個代碼中,我們定義了一個名為 six_digit_display 的模塊,該模塊包含三個信號:clk、reset 和 digit_out。其中,clk 是閉皮時鍾信號,reset 是復位信號,digit_out 是數碼管液態拿輸出信號。
在 six_digit_display 模塊的 always 塊中,我們鬧搭使用了一個計數器 counter 來控制數碼管顯示的數字。每當時鍾信號上升沿到來時,計數器就會自增1。然後,我們使用計數器的高6位(即 counter[25:20])來選擇要顯示的數字。具體地,我們使用一個名為 digit 的數組來存儲要顯示的數字,然後將 digit 數組中對應的數字輸出到 digit_out 信號中。
在復位信號下降沿到來時,我們將計數器和數碼管輸出信號都重置為0,以確保數碼管從最左邊的數字開始顯示。這樣,當時鍾信號不斷變化時,數碼管就會動態顯示從左到右為 123456 的數字序列。
㈡ verilog在寫長碼長,特別長的復雜數字邏輯的時候怎麼寫
用systemverilog寫的,相比於Verilog就多了個logic 變數,其它與Verilog一致。
頂層模塊:
`timescale 1ns/1ps
//模塊說明:7段數碼管顯示,一共有8個數碼管
//共陽模式,低電平點亮,數碼管採用3-8 解碼器——74HC138晶元,
mole cnt_60
(
input logic CLK , //輸入時鍾,頻率:
input logic RST_n , //復位埠,低電平復位
output logic [3:0] DSEL , //7段數碼管【8--1】對應選擇
output logic DEN , //數碼管使能,高電平有效
output logic [7:0] led7_out //數據輸出,最低位為小數點
);
logic [26:0] num; //待顯示的數字
logic [2:0] dot; //待顯示數字的小數點位置
always@(posedge CLK,negedge RST_n)
begin
if(!RST_n)
num <= 27'd0;
else
num = (num != 59)? (num + 27'd1) : num;
end
LED_7 U_LED_7
(
.CLK (CLK ), //輸入時鍾
.RST_n (RST_n ), //復位埠,低電平復位
.data_num (num ), //待顯示的數據
.data_dot (dot ), //輸入數據小數點位置
.DSEL (DSEL ), //7段數碼管【8--1】對應選擇
.DEN (DEN ), //數碼管使能,高電平有效
.led7_out (led7_out ) //數據輸出,最低位為小數點
);