Wishbone addresses of available LOGI wishbone peripherals

There are a few LOGI wishbone peripherals available in the LOGI Skeleton Architecture Editor. The base wishbone addresses of the peripherals that are put into the Editor can be displayed with the function "Get Memory Map" (eg. 0x0, 0x10). But where can I find what information I have to write to which wishbone address? For instance, for the PWM peripheral I have the information:
address    |    name       |    note    |
0x0000       register_0        read :0xDEAD
0x0001       register_1        read : 0xBEEF
0x0002       register_3        read/write register
0x0003       register_4        write pmod2/read pmod1 and switches
0x0008       pwm_divider       system_clock divider for pwm
0x0009       pwm_period        pwm signal period
0x000A       pwm0_high         high time for pwm0 (unconnected)
0x000B       pwm1_high         high time for pwm1 connected to LED0
0x000C       pwm2_hight        high time for pwm2 connected to LED1READ REGISTER ON THE FPGA
But what are ranges of 'pwm_devider' and 'pwm_period'? And I see that the output of the PWM peripheral is a std_logic_vector of size 7, and I only see 2 pwm outputs in the wishbone addresses. 

This question is not only concerning the PWM peripheral, but also all other available peripherals. What do I have to write to which addresses and what is the format of that information.

Comments

  • For now you have to look in the HDL ... but i need to write documentation for all peripherals to provide the address map. In the mean-time can you tell me what you component you need the description for ?
  • For now I only need the description for the Servo peripheral.
  • Servo peripheral mapping is :
    0x0000 : servo 1 position
    0x0001 : servo 1 failsafe position (when peripheral is held in reset)
    0x0002 : servo 2 position
    0x0003 : servo 2 failsafe position (when peripheral is held in reset)
    ...

    default configuration have servo position only encoded on a byte.
  • Where would you prefer to find the peripherals description ? In teh Wiki or in a a separate PDF document for each peripherals ?
  • So if I understand it correctly I can create 8 servo signals with one Servo peripheral (0x0000 to 0x000F), and I cannot change the servo pulse frequency (can only be done within the vhdl file).

    But what do I write to the register? Is it a 16-bit unsigned integer where 0 means a  servo pulse of 1ms and 65535 a servo pulse of 2ms. Or do I write a 16-bit signed integer with 0 being 1.5ms, -32768 being 1ms, and 32767 being 2ms. Or something different maybe?
  • The servo frequency is defined in the HDL. The default peripheral has position encoded on a 8-bit value with 0 being 1ms and 255 being 2ms. I can make changes to the module if your requirements are different.
  • Thank you very much for the information. It is not necessary to change the module, this will do.
  • And as to where I would prefer the peripherals description, I think that it is nicer to have them on the wiki. Wiki entries like http://valentfx.com/wiki/index.php?title=LOGI_-_Wishbone_-_Project can then refer to the wiki pages.
  • edited December 2015

Sign In or Register to comment.