You are on page 1of 7

Các dạng bài Thiết kế hệ thống

0.Thanh ghi dich


module flipD(
input D,
input clk,
output reg Q
);
always@(negedge clk)
begin
Q=D;
end
endmodule
module thanhghidich(
input in,
input clk,
output out,
output wire q1, q2, q3
);
flipD F1 (in,clk,q1);
flipD F2 (q1,clk,q2);
flipD F3 (q2,clk,q3);
flipD F4 (q3,clk,out);
endmodule

1. Fulladder 4 bit
module adder1bit(
input a, b, cin, out, cout
);
assign out=a^b^cin;
assign cout=((a^b)&cin)|(a&b);
endmodule
module adder4bit(
input [3:0] A, B,
output [4:0] OUT
);
wire C1,C2,C3;
adder1bit F1(A[0],B[0],0,OUT[0],C1);
adder1bit F2(A[1],B[1],C1,OUT[1],C2);
adder1bit F3(A[2],B[2],C2,OUT[2],C3);
adder1bit F4(A[3],B[3],C3,OUT[3],OUT[4]);
endmodule

-SÁNG DẦN TỪ TRÁI SANG PHẢI VÀ PHẢI SANG TRÁI SỬ DỤNG MODE
module SANGDANSAUDOTATDAN(
input clk, mode, ss, rst,
output reg [7:0] led
);
always@(posedge clk)
begin
if(rst==1)
led=0;
else begin
if(ss==1)
led=led;
else begin
if(mode==1)
begin
if(led==8'b11111111)
led=0;
else begin
led=led>>1;
led[7]=led[7]+1;
end
end
else
if(led==8'b11111111)
led=0;
else begin
led=led<<1;
led[0]=led[0]+1;
end
end
end
end
endmodule

- SÁNG TỪ TRONG RA – SÁNG TỪ NGOÀI VÀO SỬ DỤNG


MODE
module SANGDANSAUDOTATDAN(
input clk, mode, ss, rst,
output reg [7:0] led
);
always@(posedge clk)
begin
if(rst==1)
led=0;
else begin
if(ss==1)
led=led;
else begin
if(mode==1)
begin
if(led==8'b11111111)
led=8'b00011000;
else begin
if(led==0)
led=8'b00011000;
else begin
led[7:4]=led[7:4]<<1;
led[4]=led[4]+1;
led[3:0]=led[3:0]>>1;
led[3]=led[3]+1;
end
end
end
else
if(led==8'b11111111)
led=8'b10000001;
else begin
if(led==0)
led=8'b10000001;
else begin
led[7:4]=led[7:4]>>1;
led[7]=led[7]+1;
led[3:0]=led[3:0]<<1;
led[0]=led[0]+1;
end
end
end
end
end
endmodule

- SÁNG 1 LẦN 2 BIT DỊCH TỪ TRÁI SANG PHẢI


-LED SÁNG DẦN SAU ĐÓ TẮT DẦN , K THÔNG QUA MODE

module SANGDANSAUDOTATDAN(
input rst,clk,
output reg [7:0] led
);
always@(posedge clk)
begin
if(rst==1)
led=0;
else begin
if(led[0]==0)
begin
led=led>>1;
led[7]=led[7]+1;
end
else if(led[0]==1)
led=led>>1;
end
end
endmodule
3.Mux (8 sang 1)
4.Demux (1 sang 8)
5.encoder (8 sang 3)
6.decoder ( 3 sang 8)

7.Mach dem (RST,SS,MODE,MIN,MAX)


module demlen(
input rst,
input ss,
input mode,
input clk,
input [3:0] max, min,
output reg [3:0] dem
);
always@(negedge clk)
begin
if(rst==1)
dem=0;
else begin
if(ss==1)
dem=dem;
else begin
if(mode==1)
begin
if(dem<max)
dem=dem+1;
else if (dem==max)
dem=min;
end
else
begin
if(dem>min)
dem=dem-1;
else if (dem==min)
dem=max;
end
end
end
end

You might also like