FTDI Community

Please login or register.

Login with username, password and session length.
Advanced Search  

News:

Welcome to the FTDI Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ FTDI Support


New Bridgetek Community is now open

Please note that we have created the Bridgetek Community to discuss all Bridgetek products e.g. EVE, MCU.

Please follow this link and create a new user account to get started.

Bridgetek Community

Author Topic: Transfer serial data over '245 sync FIFO' usb in FTDI 2232H in FPGA board  (Read 2497 times)

hari

  • Newbie
  • *
  • Posts: 1
    • View Profile

I have a custom made board and it has FTDI 2232H chip for serial data transfer. So to start with very basic steps, I assigned the usb data pins to LEDS to vies the output that I send over the serial communication port.

 

following is my very basic verilog code to check the working of USB,

The board has differential clock each working at 25MHZ. So the board is made to work at 50MHZ frequency as implemented in the following code,

Code: [Select]
module transfer(
input [7:0] usb_d,
input usb_rxfn, input usb_txen,
output usb_rdn, output usb_wr,
input CLK_IN_P,  input CLK_IN_N,  output reg [7:0] led);
   
wire CLK_IN;
 
IBUFDS IBUFDS_CLKIN (.I(CLK_IN_P), .IB(CLK_IN_N), .O(CLK_IN));
 wire clkin;
  assign clkin = CLK_IN;
 
 
reg [7:0]a;
 
always@(posedge clkin)
 
begin
 a[0]=usb_d[0] &1;
 a[1]=usb_d[1] &1;
 a[2]=usb_d[2] &1;
 a[3]=usb_d[3] &1;
 a[4]=usb_d[4] ^1;
 a[5]=usb_d[5] ^1;
 a[6]=usb_d[6] ^1;
 a[7]=usb_d[7] ^1;
 
 
 led[0]=a[0];
 led[1]=a[1];
 led[2]=a[2];
 led[3]=a[3];
 led[4]=a[4];
 led[5]=a[5];
 led[6]=a[6];
 led[7]=a[7];
 end
 
endmodule

Also, the thing I observed is, when the bit file is programmed, the leds[4] to leds[7] start blinking, which denotes that before even the values arrive from usb_d[4] to usb_d[7] the default values it assumes is '0'.

Following is the constraint file used

Code: [Select]
set_property IOSTANDARD LVCMOS33 [get_ports usb_rdn]
set_property IOSTANDARD LVDS_25 [get_ports CLK_IN_P]
set_property IOSTANDARD LVDS_25 [get_ports CLK_IN_N]
set_property IOSTANDARD LVCMOS33 [get_ports usb_wr]
set_property IOSTANDARD LVCMOS33 [get_ports usb_txen]
 
set_property IOSTANDARD LVCMOS33 [get_ports usb_rxfn]
set_property PACKAGE_PIN F1 [get_ports usb_rxfn]
set_property PACKAGE_PIN E1 [get_ports usb_rdn]
 
set_property PACKAGE_PIN E2 [get_ports usb_txen]
set_property PACKAGE_PIN D2 [get_ports usb_wr]
set_property PACKAGE_PIN E3 [get_ports CLK_IN_P]
 
create_clock -period 20.000 -name CLK_IN [get_ports CLK_IN_P];
 
set_property PACKAGE_PIN R12 [get_ports {led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property PACKAGE_PIN T11 [get_ports {led[6]}]
set_property PACKAGE_PIN T9 [get_ports {led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property PACKAGE_PIN U11 [get_ports {led[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property PACKAGE_PIN V11 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property PACKAGE_PIN V10 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property PACKAGE_PIN R10 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN T10 [get_ports {led[0]}]
set_property PACKAGE_PIN J3 [get_ports {usb_d[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {usb_d[6]}]
set_property PACKAGE_PIN H4 [get_ports {usb_d[6]}]
set_property PACKAGE_PIN G4 [get_ports {usb_d[5]}]
set_property PACKAGE_PIN G3 [get_ports {usb_d[4]}]
set_property PACKAGE_PIN H2 [get_ports {usb_d[3]}]
set_property PACKAGE_PIN H1 [get_ports {usb_d[2]}]
set_property PACKAGE_PIN G2 [get_ports {usb_d[1]}]
set_property PACKAGE_PIN G1 [get_ports {usb_d[0]}]

I used serial command to send data from matlab, following is my complete code in Matlab

Code: [Select]
s=serail('COM27');
fopen(s);
d=['01'];
d1=sscanf(d,'%d');
fwrite(s,d1,'uint8');
fclose(s);
Logged