kdo mi může pomoci? Jak navrhnout jeden bidirection 1 / 8 multiplexr

Z

ZFDok

Guest
Navrhneme i jeden bidirection multiplexer 1-8, i didn't úspěšný, i použité metodě
modul (Dir, Sel, Row, Col);
vstup Dir;
příkon [2: 0] Sel;
InOut Row;
InOut [7: 0] Col;
...
endmodule

kdo mi může pomoci?jak navrhnout bidirection modul?

 
Tady je to, co hledáte spolu s testbench!
Hope this helps!Kód:

Modul bi_mux_8_1 (/ * AUTOARG * /

/ / Inouts

Row, Col,

/ / Vstupy

Dir, Sel

);

vstup Dir;

příkon [2: 0] Sel;

InOut Row;

InOut [7: 0] Col;

reg [7:0] dekódováno;/ / Vstup z řádku na sloupec

přidělit Col [0] = dekódované [0] & Dir?
Řádek: 1'bz;

přidělit Col [1] = dekódované [1] & Dir?
Řádek: 1'bz;

přidělit Col [2] = dekódované [2] & Dir?
Řádek: 1'bz;

přidělit Col [3] = dekódované [3] & Dir?
Řádek: 1'bz;

přidělit Col [4] = dekódované [4] & Dir?
Řádek: 1'bz;

přidělit Col [5] = dekódované [5] & Dir?
Řádek: 1'bz;

přidělit Col [6] = dekódované [6] & Dir?
Řádek: 1'bz;

přidělit Col [7] = dekódované [7] & Dir?
Řádek: 1'bz;

/ / Vstup z col k řádku

přidělit Row = dekódované [0] & ~ Dir?
Col [0]: 1'bz;

přidělit Row = dekódované [1] & ~ Dir?
Kol [1]: 1'bz;

přidělit Row = dekódované [2] & ~ Dir?
Col [2]: 1'bz;

přidělit Row = dekódované [3] & ~ Dir?
Col [3]: 1'bz;

přidělit Row = dekódované [4] & ~ Dir?
Col [4]: 1'bz;

přidělit Row = dekódované [5] & ~ Dir?
Col [5]: 1'bz;

přidělit Row = dekódované [6] & ~ Dir?
Col [6]: 1'bz;

přidělit Row = dekódované [7] & ~ Dir?
Col [7]: 1'bz;Vždy @ (/ * AS * / Dir nebo Sel) begin

dekódované = 8'b00000000;

dekódované [Sel] = 1'b1;

konecendmodule / / bi_mux_8_1Modul test ();

reg Dir, / / Do bi_mux_8_1 z bi_mux_8_1.v

reg [2:0] Sel; / / Do bi_mux_8_1 z bi_mux_8_1.vdrátu [7:0] Kol; / / To / From bi_mux_8_1 z bi_mux_8_1.v

drát Row; / / To / From bi_mux_8_1 z bi_mux_8_1.vreg [7:0] Col_reg; / / To / From bi_mux_8_1 z bi_mux_8_1.v

reg Row_reg; / / To / From bi_mux_8_1 z bi_mux_8_1.vpřiřadit Col = Col_reg;

přiřadit Row = Row_reg;bi_mux_8_1 bi_mux_8_1 (/ * AUTOINST * /

/ / Inouts

. Row (Řádek),

. Plukovník (Kol [7:0]),

/ / Vstupy

. Dir (Dir),

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

Počáteční begin

$ monitor ($ time, "Dir = Ozn% b =% b =% b Col 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 $ konec;

konecendmodule / / test

 
velmi děkuji za Vás!ale i setkat problém, když jsem volat modul dva z nich, syntezátor zpráva chyba @ E: FX173: "E: \ zfd \ FPGA \ Xilinx \ xcr3032xl \ test.v": 11:66:11:70 | Bidir pin MobRi feeds další bidir pin.Musíte přidat rejstříku nebo nárazník mezi nimi.MobRi je jedna z mých vstupního signálu, horní modul:
`define 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;
drát MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi;
drátu [7: 0] wDirection;
drátu [2: 0] wSelRxd, wSelTxd, wSelDtr, wSelDsr, wSelRts, wSelCts, wSelDcd, wSelRi;
drátu [ `MAXBITS: 1] wCtrlData;přiřadit wDirection = 8'b00110100;
přiřadit wSelRxd = wCtrlData [21: 19];
přiřadit wSelTxd = wCtrlData [18: 16];bi_mux_8_1 MatrixRxd (. Dir (wDirection [6]). Sel (wSelRxd). Row (UsbRxd). Plukovník ((MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi)));
bi_mux_8_1 MatrixTxd (. Dir (wDirection [5]). Sel (wSelTxd). Row (UsbTxd). Plukovník ((MobDcd, MobRxd, MobTxd, MobDtr, MobDsr, MobRts, MobCts, MobRi)));

endmodule
proč je schopen objevit tato chyba?i use Xilinx CPLD XCR3032XL čip.

 
budu používat CPLD to config RS_232 signálu na vstupu a výstupu náhodně náhodně, to znamená 8 x 8 matice, vyberte pomocí mikrokontroléru.

 
Jak o tom mux 1x8?
Kód:

Modul top (Dir, Sel, Row, Col);

vstup Dir, / / Low vybere řádek-se-col.
Vybírá vysoké col-k-řady.

příkon [2:0] Sel;

InOut Row;

InOut [7:0] Col;přidělit Row = Dir?
Col [Sel]: 'bz;

přidělit Col = Dir?
'bz: (7'bz, Row, 7'bz)>> (7-Sel);

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top