Hi,
I am trying to find out more information for using the GC5016, and cmd5016 tool on the TI website.
How do I include the cmd5016 program in my software design?
Thanks,
Radio Joe
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I am trying to find out more information for using the GC5016, and cmd5016 tool on the TI website.
How do I include the cmd5016 program in my software design?
Thanks,
Radio Joe
Hello,
The cmd5016 tool is used to develop the register programming for the GC5016 DDC / DUC. The attached guide "Using cmd5016", and the GC5016 datasheet have the descriptive information for programming.
The GC5016 SEK GC Studio software has a graphic language wrapper that works with cmd5016. The TSW4100 EVM has a Matlab GUI software package that developes the PFIR filter taps, and text programming that
works with cmd5016. In the attachment there are sample files for the GC5016 DDC, DUC, and Transceiver (both DDC and DUC at the same time) modes.
In transitioning from the GC5016 SEK EVM design, to the customer board, having an EVM project that can be demonstrated, and exporting the programming file from GC Studio to a 2 column output file (hexadecimal address, hexadecimal data), is the minimal development needed. Most customers do not want to imbed the cmd5016 interpreter into their embedded system.
The cmd5016 tool has a .h (for h insert file programming), and a .gc101 (dwr16 hexadr hexdata) text file for programming. Typically these are read as files or compiled into the customer embedded host software. The .h file insert file programming, also has an example C function that can read in the page addr, reg addr, reg data structure.
Note: the attachment contains the cmd5016 software, and a batchfile to call the cmd5016 software from a windows DOS terminal application.
Regards,
hi,
I download the using_cmd5016_ 101105.zip file you have uploaded.It is very useful for me .but I have a probelm with the cmd5016.exe that is when I put cmd5016TmpCmdFile into cmd5016.exe .only cmd5016TmpCmdFile.anl have worlds which are "Couldn't open coefficient file: fck69p12_fp10_fs12p2_6CIC_96.taps" other four flies have nothing.I do not known how does it happen.could you tell why and what shall I do .
thank you very much.
Hello,
The error message indicates that the 'fir_coef" 'filename' line input to cmd5016 could not find a PFIR coeffiicient file and path in the filename field.
I have attached a coefficient set you can save to the above filename, and retry your test.
-3 31 -45 -127 -200 -178 -37 141 211 88 -149 -293 -178 142 393 310 -101 -499 -486 12 600 710 139 -682 -985 -371 727 1314 710 -714 -1703 -1192 608 2167 1883 -352 -2739 -2922 -173 3512 4667 1308 -4754 -8415 -4723 7109 22239 32767 32767 22239 7109 -4723 -8415 -4754 1308 4667 3512 -173 -2922 -2739 -352 1883 2167 608 -1192 -1703 -714 710 1314 727 -371 -985 -682 139 710 600 12 -486 -499 -101 310 393 142 -178 -293 -149 88 211 141 -37 -178 -200 -127 -45 31 -3 Note: there should be 1 coefficient value per line. Regards, Joe Quintal Application Engineer TI Wireless Radio Products
hello,
Thanks for your reply. I have use the coefficient you give ,but the problem has not been solved. I have uploaded the result .could you see it for me.
I think the problem maybe I use the cmd5016 in the wrong way.for double click can not open the cmd5016.exe,so I just put the "cmd5016TmpCmdFile" file into the cmd5016.exe, after a few seconds,there are five files below .is it right for what I do ?
thanks again
Hello,
The cmd5016.exe program is run from a batch file. cmd5016 (text file name).
In the example, the 96 tap PFIR is used for the DUC portion, a 95 or 191 tap PFIR is used for the DDC portion. In the attached zip file,
extract the files to a folder.
rename the cmd5016.txt to cmd5016.bat. Then run the cmd5016.bat. this should run cmd5016, and place the analysis comments in the .anl file.
I have also included the matlab PFIR filter design element, so you can see the channel response.
Regards,
Joe Quintal
Application Engineer
Texas Instruments
hello,
I am using the GC5016 chip.I do as you tell me to use the cmd5016 and get the *.h file.I want to use the DSP to config the GC5016.but after I run the program .I can not get the GC5016's output .there are no output clock and no output datas.I don't known why.I use C language function which is given in the example.as follows:
#include <stdio.h>
#include "hfile.h" //NOTE: change this name to match the name of your hfile
#define UNKNOWN -10
#define GLOBAL -1
#define PAGE_ADDRESS 2
extern int write_gc5016(unsigned short addr, unsigned short val);
int config_gc5016();
int main ()
{
config_gc5016();
}
int config_gc5016()
{
short i, currentPage, retval;
currentPage = UNKNOWN; //initialize to unknown page
for(i=0; i<nwrites; i++) //loop through all register writes
{
//if page is not currently right and register is NOT global, then set to new page
if((currentPage != regs[i].page) && (regs[i].page != GLOBAL))
{
retval = write_gc5016(PAGE_ADDRESS, regs[i].page);
if (retval) //if error writing, then exit and return error value
return (retval);
currentPage = regs[i].page; //update current page
}
//page is currently set right; write the register
retval = write_gc5016(regs[i].addr, regs[i].val);
if(retval) //if error writing, then exit and return error value
return(retval);
}
//config done without errors, return 0
return(0);
}
write_gc5016() is a function which is used in the DSP to put the value into the address.is it right?
after I config the GC5016's registers.what should I do to known whether the registers have been configed?
could you help me ? thank you !
Regards.
Hello,
There are several other items needed to run the GC5016, other than the uprocessor register programming:
Power Supplies 1,8v and 3.3v are OK
Ck - clock is proper amplitude and frequency,
TRST - JTAG Reset is pulled to GND directly or through 1K resistor.
RST - this signal is initially a logic '0', it is pulled to a logic '1' (> 2.4v) after the 1.8v power supply is OK.
The GC5016 can have a level or Edge Write Mode, this is controlled through the WRMODE pin (logic '0' for Edge Write).
Section 17.4 of the datasheet describes there are global and paged addresses in the GC5016. The low 16 addresses are global. The upper 16 addresses require a page, and then
the address within the page.
You can use your processor and write different values to addresses 0x02, and 0x03. Register address 0x2 you can write the lower byte. Register address 0x3 you can write the lower
14 bits.
Once you can write and read reg address 0x2, and 0x3; set the page register to 0. Write to the 0 to F pages, using addresses 0x10 to 0x1f to write the channel A PFIR coeffficients,
after writing all of the coefficients, then read them back, once this works, you can go onto the diagnostic test.
follow the GC5016 datasheet, section 19 for board bring up. (you only need to run diagnostic test 1 instead of all the diagnostic tests)
once you can reliably write to and read from the GC5016 registers, then you would repeat this process using your .h file.
Most Common problems for no output:
Ck clock is not correct
TRST is not '0'
RST is not '1'
uprocessor registers are not written properly
Regards,
Radio Joe
hello,
I also have some questions to ask for you .
1. you say that clock is proper amplitude .I am not sure what amplitude is proper. in my test.the clock amplitude is 3.2V and frequence is 10MHz .is that OK ?
2.you tell me to read the registers.but I don't known how to read them,maybe I don't understand the Page , Addr and Val correctly.could give me an example to tell me how to read the registers in order to check whether I have write the registers correctly.
3.I don't known how to use the *.gc101 file.in the *.gc101 file ,there are "dwr16" and "dcm16" .what are they?are they functions?I guess they are about "write" and "read", is that right ?
4. I want to ask something about the Sync.in the datasheet .it says that in the Standlone mode,I have to set pseudo_command sync_mode to "9".but what I should do in the circuit . there are SIA, SIB, and SO ,how to connect them?
thank you for answer my question.
Regard.
Hello,
Here are some answers:
1) The GC5016 Ck waveform needs to meet the DC characteristics and AC characteristics in the GC5016 Datasheet. In looking at the Ck input if the signal is 10Mhz, and goes from 0v to 3.2v this is a proper amplitude.
The GC5016 logic low is < 0.8v, the logic one is > 2v. If the clock amplitude exceeds -0.5 and VPAD + 0.5 (3.8v), the ESD circuitry will limit the amplitude. 0 to 3.2v is OK for amplitude. The CK input needs to have a specific frequency, low period, high period and rise time. The maximum rise time and fall time is 2ns. At 10Mhz, use an oscilloscope and try to monitor the GC5016 CK signal near the input ball. The signal should
have a rising edge faster than <=2ns risetime, it should be a logic '1' for 48ns, it should havea <=2ns falltime, and a logic '0' for 48ns, period of 100ns.
2) Reading the GC5016 registers, is writing the page register, and then reading a register. The uprocessor read at an address, is shown in the timing diagram
Figure 27 of the GC5016 datasheet shows the Read Cycle. Figure 28 shows the Write Cycle, given the WRMODE pin is GNDed. In the initial testing, you can write to register 0x2 (Page mode register)
and read from register 0x2. Once you have verified the timing per the timing diagrams, you can expand the test, to check the remainder of the address lines. The suggestion was to use page address 0,
and addresses 0x10 to 0x1f which are for the PFIR coefficients. Write a different value to all 16 registers, then read them back.
a) write a value to register 0x2 - you can write a pattern to the lower byte. Reading the register, you should read the pattern that you wrote
b) write a value to register 0x2, write a different value to register 0x3 - register 0x2 (lower byte), register 0x3(lower 14 bits), once you write the values, you should then read them back
c) write 0 to register 0x2, to set the page register to 0
write different values to addresses 0x10 through 0x1f. then read the same addresses back - you should get the proper value that you wrote when you read the PFIR coefficient memory
3) the gc101 file has 3 instructions, dwr16 - write a 16bit value, address, data
drd16 - read a 17bit value at address
dcm16 - read a 16bit value at address, compare this with data, and mask off 0x bits before compare - increments an error counter if there is a compare error
These are described in the GC5016 documentation - GC101_control_sw.zip which is attached
4) if the sync_mode is set to 9, the SIA, SIB pins can be tied to GND or 3.3v through a resistor (5K or less), the SOB pin can be left as a test point. During the diagnostic test, this pin should toggle.
After the fourth SOB toggle, the checksum should be stable.
Regards,
Radio Joe