私は Verilog モジュールを作成する世界にかなり慣れていないので、4to1 マルチプレクサー、パルス ジェネレーター、アップ/ダウン カウンター、および 16 進数から 7 セグメントへのディスプレイを作成する必要があります。これらはすべて、後でトップレベル モジュールに配置されます。
7 セグメントとパルス ジェネレータを作成しようとしましたが、4to1 マルチプレクサ (以前は 2to1 マルチプレクサしか作成したことがありません) とアップ/ダウン カウンタを作成するのに助けが必要です。
これは私の研究室の論文の説明です。
pulse gen: カウンターが増加または減少する時間を制御するために使用されます。これは、DELAU という名前の入力を使用して、各パルス出力間の時間の長さを決定します。各クロックティックがカウントされます。カウントされたクロック ティックの数が遅延入力と等しい場合、パルスが生成されます。
アップ/ダウン カウンター: パルスが受信されるたびに 8 ビット レジスタをインクリメントまたはデクリメントします。ザイリンクス ボードからの外部スイッチが High (1) の場合、カウンターがインクリメントします。スイッチはロー (0) で、レジスタをデクリメントします。レジスタカウントデータは、LED と 7 セグ表示のトップレベルに出力されます。
4to1 mux: パルス生成に遅延入力を提供します。マルチプレクサへの 4 つの入力は、それぞれ 0.5、1、1.5、および 2 秒の遅延の長さを提供するために、トップレベルでハードコーディングされます。2 ビットの選択は、ザイリンクス ボードの 2 つのスイッチから取得されます。ボードから、ユーザーはカウンターがカウントアップまたはカウントダウンする遅延時間を切り替えることができます。
だからここに私がこれまで持っているものがあります。マルチプレクサとアップダウン カウンターはあまりありません。(私のpulsegenもチェックしていただけますか?)
4to1MUX
`timescale 1ns / 1ps
module mux4to1(sel,seg0,seg1,seg2,seg3,delay);
input [1:0] sel;
input seg0,seg1,seg2,seg3;
output delay;
wire delay;
assign seg0 = 500000000;
assign seg1 = 1000000000;
assign seg2 = 1500000000;
assign seg3 = 2000000000;
endmodule
アップダウンカウンター
`timescale 1ns / 1ps
module updownCounter(updown,pulse,count);
input [7:0] updown,
input pulse;
output [7:0] count;
wire [7:0] count;
(i'm not sure what goes here)
endmodule
パルスジェネレータ
`timescale 1ns / 1ps
module pulsegen(clk,rst,delay,pulse);
input [28:0] delay;
output pulse;
wire pulse;
reg [28:0] count;
always @(posedge clk, posedge rst)
if (rst)
count <= 28'b0;
else if (pulse)
count <= 28'b0;
else
count <= count + 28'b1;
assign pulse = (count == delay);
endmodule
7セグメント表示
`timescale 1ns / 1ps
module sevenSegDis(hex,a,b,c,d,e,f,g);
input [3:0] hex;
output a,b,c,d,e,f,g;
reg a,b,c,d,e,f,g;
always@(*)
case(hex)
4'b0000: {a,b,c,d,e,f,g}= 7'b0000001;
4'b0001: {a,b,c,d,e,f,g}= 7'b1001111;
4'b0010: {a,b,c,d,e,f,g}= 7'b0010010;
4'b0011: {a,b,c,d,e,f,g}= 7'b0000110;
4'b0100: {a,b,c,d,e,f,g}= 7'b1001100;
4'b0101: {a,b,c,d,e,f,g}= 7'b0100100;
4'b0110: {a,b,c,d,e,f,g}= 7'b0100000;
4'b0111: {a,b,c,d,e,f,g}= 7'b0001111;
4'b1000: {a,b,c,d,e,f,g}= 7'b0000000;
4'b1001: {a,b,c,d,e,f,g}= 7'b0000100;
4'b1010: {a,b,c,d,e,f,g}= 7'b0001000;
4'b1011: {a,b,c,d,e,f,g}= 7'b1100000;
4'b1100: {a,b,c,d,e,f,g}= 7'b0110001;
4'b1101: {a,b,c,d,e,f,g}= 7'b1000010;
4'b1110: {a,b,c,d,e,f,g}= 7'b0110000;
4'b1111: {a,b,c,d,e,f,g}= 7'b0111000;
default: {a,b,c,d,e,f,g}= 7'b1110111;
endcase
endmodule