som kan hjelpe meg? Hvordan du utformer en bidirection 1 / 8 multiplexr

Z

ZFDok

Guest
Jeg skal designe en bidirection 1-8 multiplekser, jeg visste ikke vellykkede, jeg anvendt metoden
modul (Dir, Sel, Row, Col);
input Dir;
input [2: 0] Sel;
Inout Row;
Inout [7: 0] Col;
...
endmodule

hvem kan hjelpe meg?hvordan utforme bidirection modulen?

 
Her er hva du leter etter sammen med testbench!
Håper dette hjelper!Code:

modul bi_mux_8_1 (/ * AUTOARG * /

/ / Inouts

Row, Col,

/ / Inputs

Dir, Sel

);

input Dir;

input [2: 0] Sel;

Inout Row;

Inout [7: 0] Col;

reg [7:0] dekodet;/ / Innspill fra rad til col

tildele Col [0] = dekodet [0] & Dir?
Rad: 1'bz;

tildele Col [1] = dekodet [1] & Dir?
Rad: 1'bz;

tildele Col [2] = dekodet [2] & Dir?
Rad: 1'bz;

tildele Col [3] = dekodet [3] & Dir?
Rad: 1'bz;

tildele Col [4] = dekodet [4] & Dir?
Rad: 1'bz;

tildele Col [5] = dekodet [5] & Dir?
Rad: 1'bz;

tildele Col [6] = dekodet [6] & Dir?
Rad: 1'bz;

tildele Col [7] = dekodet [7] & Dir?
Rad: 1'bz;

/ / Innspill fra col til rad

tildele Row = dekodet [0] & ~ Dir?
Col [0]: 1'bz;

tildele Row = dekodet [1] & ~ Dir?
Col [1]: 1'bz;

tildele Row = dekodet [2] & ~ Dir?
Col [2]: 1'bz;

tildele Row = dekodet [3] & ~ Dir?
Col [3]: 1'bz;

tildele Row = dekodet [4] & ~ Dir?
Col [4]: 1'bz;

tildele Row = dekodet [5] & ~ Dir?
Col [5]: 1'bz;

tildele Row = dekodet [6] & ~ Dir?
Col [6]: 1'bz;

tildele Row = dekodet [7] & ~ Dir?
Col [7]: 1'bz;alltid @ (/ * AS * / Dir eller Sel) begin

dekodet = 8'b00000000;

dekodet [Sel] = 1'b1;

sluttendmodule / / bi_mux_8_1module test ();

reg Dir; / / Til bi_mux_8_1 av bi_mux_8_1.v

reg [2:0] Sel; / / Til bi_mux_8_1 av bi_mux_8_1.vwire [7:0] Col; / / til / Fra bi_mux_8_1 av bi_mux_8_1.v

wire Row; / / til / Fra bi_mux_8_1 av bi_mux_8_1.vreg [7:0] Col_reg; / / til / Fra bi_mux_8_1 av bi_mux_8_1.v

reg Row_reg; / / til / Fra bi_mux_8_1 av bi_mux_8_1.vtildele Col = Col_reg;

tildele Row = Row_reg;bi_mux_8_1 bi_mux_8_1 (/ * AUTOINST * /

/ / Inouts

. Row (rad),

. Col (Col [7:0]),

/ / Inputs

. Dir (Dir),

. Sel (Sel [2:0]));

innledende begynne

$ monitor ($ tid, "Dir =% b Sel =% b Col =% b Row =% b", Dir, Sel, Col, Row);

Dir = 1;

Col_reg = 8'bzzzzzzzz;

Row_reg = 1'b1;

Sel = 0;

# 10 Sel = 1;

# 10 Sel = 2;

# 10 Sel = 3;

# 10 Sel = 4;

# 10 Sel = 5;

# 10 Sel = 6;

# 10 Sel = 7;

# 10;Dir = 0;

Col_reg = 8'b10101010;

Row_reg = 1'bz;

Sel = 0;

# 10 Sel = 1;

# 10 Sel = 2;

# 10 Sel = 3;

# 10 Sel = 4;

# 10 Sel = 5;

# 10 Sel = 6;

# 10 Sel = 7;

# 10 $ ferdig;

sluttendmodule / / test

 
meget takk for deg!men jeg møter et problem når jeg ringer to modul av dem er synthesizeren rapportere feilen @ E: FX173: "E: \ zfd \ FPGA \ Xilinx \ xcr3032xl \ test.v": 11:66:11:70 | BIDIR pin MobRi feeds annen BIDIR pin.Du må legge et register eller buffer mellom dem.den MobRi er et signal om innspill min øverst modulen:
`definere MAXBITS 26
modul Test (
UsbDcd, UsbRxd, UsbTxd, UsbDtr, UsbDsr, UsbRts, UsbCts, UsbRi,

MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi);

Inout UsbTxd, UsbDtr, UsbRts;
Inout UsbDcd, UsbRxd, UsbDsr, UsbRi, UsbCts;

Inout MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi;
wire MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi;
wire [7: 0] wDirection;
wire [2: 0] wSelRxd, wSelTxd, wSelDtr, wSelDsr, wSelRts, wSelCts, wSelDcd, wSelRi;
wire [ `MAXBITS: 1] wCtrlData;tildele wDirection = 8'b00110100;
tildele wSelRxd = wCtrlData [21: 19];
tildele wSelTxd = wCtrlData [18: 16];bi_mux_8_1 MatrixRxd (. Dir (wDirection [6]). Sel (wSelRxd). Row (UsbRxd). Col ((MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi)));
bi_mux_8_1 MatrixTxd (. Dir (wDirection [5]). Sel (wSelTxd). Row (UsbTxd). Col ((MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi)));

endmodule
hvorfor det er i stand til å komme denne feilen?Jeg bruker Xilinx CPLD XCR3032XL chip.

 
Jeg vil bruke CPLD å konferere RS_232 signalinngang tilfeldig og utgang tilfeldig, som betyr 8 x 8 matrise, de velger gjennom en mikrokontroller.

 
Hva med denne 1x8 MUX?
Code:

modul topp (Dir, Sel, Row, Col);

input Dir; / Low velger rad-til-col.
Høy velger kol-til-raden.

input [2:0] Sel;

Inout Row;

Inout [7:0] Col;tildele Row = Dir?
Col [Sel]: 'bz;

tildele Col = Dir?
'BZ: (7'bz, Row, 7'bz)>> (7-Sel);

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top