以Verilog 設計一個數位電路 (EX1-7)--- CD4511
`timescale 1 ns/1 ns
module ex7_CD4511( LT,LE,BI, A,B,C,D , Oa,Ob,Oc,Od,Oe,Of,Og);
input LT,LE,BI, A,B,C,D;
output Oa,Ob,Oc,Od,Oe,Of,Og;
wire [7:0]temp;
assign {Oa,Ob,Oc,Od,Oe,Of,Og}=temp;
assign temp = ({LE,LT, D,C,B,A ,BI}==7'bx0xxxxx) ? 7'b111_1111: //Lamp test
({LE,LT, D,C,B,A ,BI}==7'bx1xxxx0) ? 7'b000_0000: //hide
({LE,LT, D,C,B,A ,BI}==7'b0100001) ? 7'b111_1110: //0
({LE,LT, D,C,B,A ,BI}==7'b0100011) ? 7'b011_0000: //1
({LE,LT, D,C,B,A ,BI}==7'b0100101) ? 7'b110_1101: //2
({LE,LT, D,C,B,A ,BI}==7'b0100111) ? 7'b111_1001: //3
({LE,LT, D,C,B,A ,BI}==7'b0101001) ? 7'b011_0011: //4
({LE,LT, D,C,B,A ,BI}==7'b0101011) ? 7'b101_1011: //5
({LE,LT, D,C,B,A ,BI}==7'b0101101) ? 7'b001_1111: //6
({LE,LT, D,C,B,A ,BI}==7'b0101111) ? 7'b111_0000: //7
({LE,LT, D,C,B,A ,BI}==7'b0110001) ? 7'b111_1111: //8
({LE,LT, D,C,B,A ,BI}==7'b0110011) ? 7'b111_0011: //9
({LE,LT, D,C,B,A ,BI}==7'b0110101) ? 7'b000_0000: //10
({LE,LT, D,C,B,A ,BI}==7'b0110111) ? 7'b000_0000: //11
({LE,LT, D,C,B,A ,BI}==7'b0111001) ? 7'b000_0000: //12
({LE,LT, D,C,B,A ,BI}==7'b0111011) ? 7'b000_0000: //13
({LE,LT, D,C,B,A ,BI}==7'b0111101) ? 7'b000_0000: //14
({LE,LT, D,C,B,A ,BI}==7'b0111111) ? 7'b000_0000:7'b000_0000; //15
endmodule
`timescale 100 ns/1 ns
module testbench;
/*
module ex7_CD4511( LT,LE,BI, A,B,C,D , Oa,Ob,Oc,Od,Oe,Of,Og);
input LT,LE,BI, A,B,C,D;
output Oa,Ob,Oc,Od,Oe,Of,Og;
*/
reg LT,LE,BI, A,B,C,D;
wire Oa,Ob,Oc,Od,Oe,Of,Og;
integer i;
ex7_CD4511 UUT( LT,LE,BI, A,B,C,D , Oa,Ob,Oc,Od,Oe,Of,Og);
initial
begin
LT=1'b1 ; LE=1'b0 ; BI=1'b1;
for (i=0;i<=15;i=i+1) begin
{D,C,B,A}=i;
#20;
end
LT=1'b1 ; LE=1'b0 ; BI=1'b0;
for (i=0;i<=15;i=i+1) begin
{D,C,B,A}=i;
#20;
end
#20;
$stop;
end
endmodule
沒有留言:
張貼留言