# HG changeset patch # User Alexis # Date 2010-12-10 22:34:24 # Node ID 2c9e70f363a178b445751f887ef3081f6d1c081e # Parent 56441034bcde10c3798ca5af0090140ec673ad92 Added an automated Devices ID and Vendor ID handler diff --git a/APB_DEVICES/CListEND b/APB_DEVICES/CListEND new file mode 100644 diff --git a/APB_DEVICES/CListSTART b/APB_DEVICES/CListSTART new file mode 100644 --- /dev/null +++ b/APB_DEVICES/CListSTART @@ -0,0 +1,9 @@ + + +/*=============================================================================== + +THIS FILE IS GENERATED BY A SCRIPT, DON'T TRY TO EDIT + +TAKE A LOOK AT VHD_LIB/APB_DEVICES FOLDER TO ADD A DEVICE ID OR VENDOR ID + +===============================================================================*/ diff --git a/APB_DEVICES/VHDListEND b/APB_DEVICES/VHDListEND new file mode 100644 --- /dev/null +++ b/APB_DEVICES/VHDListEND @@ -0,0 +1,3 @@ + + +end; diff --git a/APB_DEVICES/VHDListSTART b/APB_DEVICES/VHDListSTART new file mode 100644 --- /dev/null +++ b/APB_DEVICES/VHDListSTART @@ -0,0 +1,18 @@ + +--================================================================================= +--THIS FILE IS GENERATED BY A SCRIPT, DON'T TRY TO EDIT +-- +--TAKE A LOOK AT VHD_LIB/APB_DEVICES FOLDER TO ADD A DEVICE ID OR VENDOR ID +--================================================================================= + + +library ieee; +use ieee.std_logic_1164.all; +library grlib; +use grlib.amba.all; +use std.textio.all; + + +package lpp_apb_devices is + + diff --git a/APB_DEVICES/apb_devices_list.txt b/APB_DEVICES/apb_devices_list.txt new file mode 100644 --- /dev/null +++ b/APB_DEVICES/apb_devices_list.txt @@ -0,0 +1,12 @@ +vendor VENDOR_LPP 19 + +device ROCKET_TM 1 +device otherCore 2 +device LPP_SIMPLE_DIODE 3 +device LPP_MULTI_DIODE 4 +device LPP_LCD_CTRLR 5 +device LPP_UART 6 +device LPP_CNA 7 +device LPP_APB_ADC 8 +device LPP_CHENILLARD 9 +device LPP_IIR_CEL_FILTER 10 diff --git a/LPP_drivers/libsrc/AMBA/lpp_apb_functions.h b/LPP_drivers/libsrc/AMBA/lpp_apb_functions.h --- a/LPP_drivers/libsrc/AMBA/lpp_apb_functions.h +++ b/LPP_drivers/libsrc/AMBA/lpp_apb_functions.h @@ -23,15 +23,7 @@ #define APB_BASE_ADDRS 0x80000000 #define APB_MAX_DEVICES 256 -#define VENDOR_LPP 0x19 - -#define ROCKET_TM 0x001 -#define otherCore 0x002 -#define LPP_SIMPLE_DIODE 0x003 -#define LPP_MULTI_DIODE 0x004 -#define LPP_LCD_CTRLR 0x005 -#define LPP_UART_CTRLR 0x006 -#define LPP_DAC_CTRLR 0x007 +#include "apb_devices_list.h" /** @todo implemente a descriptor structure for any APB device */ diff --git a/LPP_drivers/libsrc/DAC/apb_dac_Driver.c b/LPP_drivers/libsrc/DAC/apb_dac_Driver.c --- a/LPP_drivers/libsrc/DAC/apb_dac_Driver.c +++ b/LPP_drivers/libsrc/DAC/apb_dac_Driver.c @@ -1,68 +1,68 @@ #include "apb_dac_Driver.h" #include "lpp_apb_functions.h" -#include - - +#include + + DAC_Device* DacOpen(int count) { DAC_Device* dac0; - dac0 = (DAC_Device*) apbgetdevice(LPP_DAC_CTRLR,VENDOR_LPP,count); + dac0 = (DAC_Device*) apbgetdevice(LPP_CNA,VENDOR_LPP,count); dac0->configReg = DAC_enable; return dac0; -} - -/* -DAC_Device* DacClose(int count) -{ - DAC_Device* dac1; - dac1 = (DAC_Device*) apbgetdevice(LPP_DAC_CTRLR,VENDOR_LPP,count); - dac1->configReg = DAC_disable; - return dac1; -} -*/ - - -int DacTable() -{ - int i; - DAC_Device* dac2; - int tablo[251] = {0x9555,0x1800,0x19AA,0x1B15,0x1C0A,0x1C66,0x1C1F,0x1B44,0x19FC,0x187F,0x170F,0x15EA,0x1542,0x1537,0x15CE,0x16F2,0x187A,0x1A2B,0x1BC2,0x1D04,0x1DBF,0x1DDB,0x1D56,0x1C49,0x1AE3,0x195F,0x1800,0x1700,0x168D,0x16BA,0x1785,0x18D0,0x1A69,0x1C12,0x1D8A,0x1E98,0x1F13, - 0x1EEB,0x1E28,0x1CEC,0x1FFF,0x19E8,0x189F,0x17C8,0x1788,0x17EA,0x18E2,0x1A48,0x1BE7,0x1D7C,0x1ECA,0x1F9C,0x1FD2,0x1F64,0x1E66,0x1D00,0x1B6E,0x19EF,0x18C1,0x1817,0x180A,0x189D,0x19BA,0x1B33,0x1CCC,0x1E44,0x1F5F,0x1FEE,0x1FDC,0x1F2B,0x1DF6,0x1C6E,0x1AD1,0x1960,0x1855,0x17D9,0x1800, - 0x18C1,0x19FD,0x1B80,0x1D0A,0x1E5C,0x1F3D,0x1F87,0x1F2E,0x1E3E,0x1CDA,0x1B39,0x199C,0x1842,0x1760,0x1717,0x1771,0x185D,0x19B1,0x1B36,0x1CAA,0x1DCF,0x1E73,0x1E79,0x1DDD,0x1CB4,0x1B2B,0x197C,0x17EA,0x16B1,0x15FF,0x15EE,0x167C,0x178F,0x18F7,0x1A78,0x1BCF,0x1CC4,0x1D2A,0x1CED,0x1C14, - 0x1ABC,0x191A,0x176B,0x15F0,0x14E2,0x1467,0x1490,0x1552,0x1689,0x1800,0x1977,0x1AAE,0x1B70,0x1B99,0x1B1E,0x1A10,0x1895,0x16E6,0x1544,0x13EC,0x1313,0x12D6,0x133C,0x1431,0x1588,0x1709,0x1871,0x1984,0x1A12,0x1A01,0x194F,0x1816,0x1684,0x14D5,0x134C,0x1223,0x1187,0x118D,0x1231,0x1356, - 0x14CA,0x164F,0x17A3,0x188F,0x18E9,0x18A0,0x17BE,0x1664,0x14C7,0x1326,0x11C2,0x10D2,0x1079,0x10C3,0x11A4,0x12F6,0x1480,0x1603,0x173F,0x1800,0x1827,0x17AB,0x16A0,0x152F,0x1392,0x120A,0x10D5,0x1024,0x1012,0x10A1,0x11BC,0x1334,0x14CD,0x1646,0x1763,0x17F6,0x17E9,0x173F,0x1611,0x1492, - 0x1300,0x119A,0x109C,0x102E,0x1064,0x1136,0x1284,0x1419,0x15B8,0x171E,0x1816,0x1878,0x1838,0x1761,0x1618,0x1494,0x1314,0x11D8,0x1115,0x10ED,0x1168,0x1276,0x13EE,0x1597,0x1730,0x187B,0x1946,0x1973,0x1900,0x1800,0x16A1,0x151D,0x13B7,0x12AA,0x1225,0x1241,0x12FC,0x143E,0x15D5,0x1786, - 0x190E,0x1A32,0x1AC9,0x1ABE,0x1A16,0x18F1,0x1781,0x1604,0x14BC,0x13E1,0x139A,0x13F6,0x14EB,0x1656}; - dac2 = (DAC_Device*)0x80000800; - dac2->configReg = DAC_enable; - dac2->dataReg = tablo[0]; - - while(1) - { - for (i = 0 ; i < 251 ; i++) - { - while(!((dac2->configReg & DAC_ready) == DAC_ready)); - dac2->dataReg = tablo[i]; - while((dac2->configReg & DAC_ready) == DAC_ready); - } - } - return 0; -} - - - -int DacConst() -{ - DAC_Device* dac3; - int Value = 0x1FFF; - dac3 = (DAC_Device*)0x80000800; - dac3->configReg = DAC_enable; - while(1) - { - printf("\nEntrer une valeur entre 4096 et 8191 : "); - scanf("%d",&Value); - dac3->dataReg = Value; - } - return 0; -} - +} + +/* +DAC_Device* DacClose(int count) +{ + DAC_Device* dac1; + dac1 = (DAC_Device*) apbgetdevice(LPP_CNA,VENDOR_LPP,count); + dac1->configReg = DAC_disable; + return dac1; +} +*/ + + +int DacTable() +{ + int i; + DAC_Device* dac2; + int tablo[251] = {0x9555,0x1800,0x19AA,0x1B15,0x1C0A,0x1C66,0x1C1F,0x1B44,0x19FC,0x187F,0x170F,0x15EA,0x1542,0x1537,0x15CE,0x16F2,0x187A,0x1A2B,0x1BC2,0x1D04,0x1DBF,0x1DDB,0x1D56,0x1C49,0x1AE3,0x195F,0x1800,0x1700,0x168D,0x16BA,0x1785,0x18D0,0x1A69,0x1C12,0x1D8A,0x1E98,0x1F13, + 0x1EEB,0x1E28,0x1CEC,0x1FFF,0x19E8,0x189F,0x17C8,0x1788,0x17EA,0x18E2,0x1A48,0x1BE7,0x1D7C,0x1ECA,0x1F9C,0x1FD2,0x1F64,0x1E66,0x1D00,0x1B6E,0x19EF,0x18C1,0x1817,0x180A,0x189D,0x19BA,0x1B33,0x1CCC,0x1E44,0x1F5F,0x1FEE,0x1FDC,0x1F2B,0x1DF6,0x1C6E,0x1AD1,0x1960,0x1855,0x17D9,0x1800, + 0x18C1,0x19FD,0x1B80,0x1D0A,0x1E5C,0x1F3D,0x1F87,0x1F2E,0x1E3E,0x1CDA,0x1B39,0x199C,0x1842,0x1760,0x1717,0x1771,0x185D,0x19B1,0x1B36,0x1CAA,0x1DCF,0x1E73,0x1E79,0x1DDD,0x1CB4,0x1B2B,0x197C,0x17EA,0x16B1,0x15FF,0x15EE,0x167C,0x178F,0x18F7,0x1A78,0x1BCF,0x1CC4,0x1D2A,0x1CED,0x1C14, + 0x1ABC,0x191A,0x176B,0x15F0,0x14E2,0x1467,0x1490,0x1552,0x1689,0x1800,0x1977,0x1AAE,0x1B70,0x1B99,0x1B1E,0x1A10,0x1895,0x16E6,0x1544,0x13EC,0x1313,0x12D6,0x133C,0x1431,0x1588,0x1709,0x1871,0x1984,0x1A12,0x1A01,0x194F,0x1816,0x1684,0x14D5,0x134C,0x1223,0x1187,0x118D,0x1231,0x1356, + 0x14CA,0x164F,0x17A3,0x188F,0x18E9,0x18A0,0x17BE,0x1664,0x14C7,0x1326,0x11C2,0x10D2,0x1079,0x10C3,0x11A4,0x12F6,0x1480,0x1603,0x173F,0x1800,0x1827,0x17AB,0x16A0,0x152F,0x1392,0x120A,0x10D5,0x1024,0x1012,0x10A1,0x11BC,0x1334,0x14CD,0x1646,0x1763,0x17F6,0x17E9,0x173F,0x1611,0x1492, + 0x1300,0x119A,0x109C,0x102E,0x1064,0x1136,0x1284,0x1419,0x15B8,0x171E,0x1816,0x1878,0x1838,0x1761,0x1618,0x1494,0x1314,0x11D8,0x1115,0x10ED,0x1168,0x1276,0x13EE,0x1597,0x1730,0x187B,0x1946,0x1973,0x1900,0x1800,0x16A1,0x151D,0x13B7,0x12AA,0x1225,0x1241,0x12FC,0x143E,0x15D5,0x1786, + 0x190E,0x1A32,0x1AC9,0x1ABE,0x1A16,0x18F1,0x1781,0x1604,0x14BC,0x13E1,0x139A,0x13F6,0x14EB,0x1656}; + dac2 = (DAC_Device*)0x80000800; + dac2->configReg = DAC_enable; + dac2->dataReg = tablo[0]; + + while(1) + { + for (i = 0 ; i < 251 ; i++) + { + while(!((dac2->configReg & DAC_ready) == DAC_ready)); + dac2->dataReg = tablo[i]; + while((dac2->configReg & DAC_ready) == DAC_ready); + } + } + return 0; +} + + + +int DacConst() +{ + DAC_Device* dac3; + int Value = 0x1FFF; + dac3 = (DAC_Device*)0x80000800; + dac3->configReg = DAC_enable; + while(1) + { + printf("\nEntrer une valeur entre 4096 et 8191 : "); + scanf("%d",&Value); + dac3->dataReg = Value; + } + return 0; +} + diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -35,9 +35,14 @@ init: C-libs sh $(SCRIPTSDIR)/vhdlsynPatcher.sh sh $(SCRIPTSDIR)/makeDirs.sh lib/lpp -C-libs: +C-libs:APB_devs make -C LPP_drivers + +APB_devs: + sh $(SCRIPTSDIR)/APB_DEV_UPDATER.sh + + Patch-GRLIB: init doc sh $(SCRIPTSDIR)/patch.sh $(GRLIB) diff --git a/lib/lpp/dsp/iir_filter/APB_IIR_CEL.vhd b/lib/lpp/dsp/iir_filter/APB_IIR_CEL.vhd --- a/lib/lpp/dsp/iir_filter/APB_IIR_CEL.vhd +++ b/lib/lpp/dsp/iir_filter/APB_IIR_CEL.vhd @@ -61,7 +61,7 @@ architecture AR_APB_IIR_CEL of APB_IIR_C constant REVISION : integer := 1; constant pconfig : apb_config_type := ( - 0 => ahb_device_reg (VENDOR_LPP, ROCKET_TM, 0, REVISION, 0), + 0 => ahb_device_reg (VENDOR_LPP, LPP_IIR_CEL_FILTER, 0, REVISION, 0), 1 => apb_iobar(paddr, pmask)); diff --git a/lib/lpp/lpp_ad_Conv/lpp_apb_ad_conv.vhd b/lib/lpp/lpp_ad_Conv/lpp_apb_ad_conv.vhd --- a/lib/lpp/lpp_ad_Conv/lpp_apb_ad_conv.vhd +++ b/lib/lpp/lpp_ad_Conv/lpp_apb_ad_conv.vhd @@ -53,7 +53,7 @@ architecture ar_lpp_apb_ad_conv of lpp_a constant REVISION : integer := 1; constant pconfig : apb_config_type := ( - 0 => ahb_device_reg (VENDOR_LPP, LPP_ADC_7688, 0, REVISION, 0), + 0 => ahb_device_reg (VENDOR_LPP, LPP_APB_ADC, 0, REVISION, 0), 1 => apb_iobar(paddr, pmask)); signal Rdata : std_logic_vector(31 downto 0); diff --git a/lib/lpp/lpp_amba/lpp_amba.vhd b/lib/lpp/lpp_amba/lpp_amba.vhd --- a/lib/lpp/lpp_amba/lpp_amba.vhd +++ b/lib/lpp/lpp_amba/lpp_amba.vhd @@ -20,28 +20,12 @@ library ieee; use ieee.std_logic_1164.all; library grlib; use grlib.amba.all; --- pragma translate_off use std.textio.all; --- pragma translate_on package lpp_amba is -constant VENDOR_LPP : amba_vendor_type := 16#19#; - --- LPP device ids - -constant ROCKET_TM : amba_device_type := 16#001#; -constant otherCore : amba_device_type := 16#002#; -constant LPP_SIMPLE_DIODE : amba_device_type := 16#003#; -constant LPP_MULTI_DIODE : amba_device_type := 16#004#; -constant LPP_LCD_CTRLR : amba_device_type := 16#005#; -constant LPP_UART : amba_device_type := 16#006#; -constant LPP_CNA : amba_device_type := 16#007#; -constant LPP_ADC_7688 : amba_device_type := 16#008#; -constant LPP_CHENILLARD : amba_device_type := 16#009#; - component APB_CHENILLARD is generic ( pindex : integer := 0; diff --git a/lib/lpp/lpp_uart/UART.vhd b/lib/lpp/lpp_uart/UART.vhd --- a/lib/lpp/lpp_uart/UART.vhd +++ b/lib/lpp/lpp_uart/UART.vhd @@ -60,7 +60,7 @@ constant zeroVect : std_logic_ve begin -RDATA <= RDATA_int(8 downto 1); + WDATA_int <= '1' & WDATA & '0'; BaudGenerator : BaudGen @@ -90,6 +90,7 @@ begin end if; if NwDat_int_reg = '0' and NwDat_int = '1' then NwDat <= '1'; + RDATA <= RDATA_int(8 downto 1); elsif ack = '1' then NwDat <= '0'; end if; @@ -97,3 +98,6 @@ begin end process; end ar_UART; + + + diff --git a/scripts/APB_DEV_UPDATER.sh b/scripts/APB_DEV_UPDATER.sh new file mode 100644 --- /dev/null +++ b/scripts/APB_DEV_UPDATER.sh @@ -0,0 +1,77 @@ +echo "=======================================================================================" +echo "---------------------------------------------------------------------------------------" +echo " LPP VHDL APB Devices List Updater " +echo " Copyright (C) 2010 Laboratory of Plasmas Physic. " +echo "=======================================================================================" +echo '---------------------------------------------------------------------------------------- + This file is a part of the LPP VHDL IP LIBRARY + Copyright (C) 2010, Laboratory of Plasmas Physic - CNRS + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +----------------------------------------------------------------------------------------' +echo +echo +echo + +LPP_PATCHPATH=`pwd -L` + +cd $LPP_PATCHPATH/lib/lpp + + +VHDFileStart=$LPP_PATCHPATH/APB_DEVICES/VHDListSTART +VHDFileEnd=$LPP_PATCHPATH/APB_DEVICES/VHDListEND + +CFileStart=$LPP_PATCHPATH/APB_DEVICES/CListSTART +CFileEnd=$LPP_PATCHPATH/APB_DEVICES/CListEND + +ListFILE=$LPP_PATCHPATH/APB_DEVICES/apb_devices_list.txt + +VHDListFILE=$LPP_PATCHPATH/lib/lpp/lpp_amba/apb_devices_list.vhd +CListFILE=$LPP_PATCHPATH/LPP_drivers/libsrc/AMBA/apb_devices_list.h + + +cat $VHDFileStart>$VHDListFILE +cat $CFileStart>$CListFILE + +grep vendor $ListFILE | sed "s/vendor /constant /" | sed "s/.* /& : amba_vendor_type := 16#/" | sed "s/.*#*/&;/" >> $VHDListFILE +grep vendor $ListFILE | sed "s/vendor /#define /" | sed "s/.* /& 0x/" >> $CListFILE + +echo " ">>$VHDListFILE +echo " ">>$CListFILE + +grep device $ListFILE | sed "s/device /constant /" | sed "s/.* /& : amba_device_type := 16#/" | sed "s/.*#*/&;/" >> $VHDListFILE +grep device $ListFILE | sed "s/device /#define /" | sed "s/.* /& 0x/" >> $CListFILE + +cat $VHDFileEnd>>$VHDListFILE +cat $CFileEnd>>$CListFILE + +sh $(SCRIPTSDIR)/GPL_Patcher.sh vhd lib/lpp/lpp_amba/ +sh $(SCRIPTSDIR)/GPL_Patcher.sh h LPP_drivers/libsrc/AMBA/ + +cd $LPP_PATCHPATH + + + + + + + + + + + + + + diff --git a/scripts/doc.sh b/scripts/doc.sh --- a/scripts/doc.sh +++ b/scripts/doc.sh @@ -26,8 +26,5 @@ echo echo - - -cd doc/latex -make -cp refman.pdf ../../VHD_lib.pdf +make -C doc/latex +cp doc/latex/refman.pdf ../../VHD_lib.pdf diff --git a/scripts/makeDirs.sh b/scripts/makeDirs.sh --- a/scripts/makeDirs.sh +++ b/scripts/makeDirs.sh @@ -34,7 +34,7 @@ cd $LPP_PATCHPATH/lib/lpp #find . -type d|grep ./>$LPP_PATCHPATH/lib/lpp/dirs.txt -rm $LPP_PATCHPATH/lib/lpp/dirs.txt +rm -f $LPP_PATCHPATH/lib/lpp/dirs.txt for folders in $(find . -type d|grep ./) do diff --git a/scripts/patch.sh b/scripts/patch.sh --- a/scripts/patch.sh +++ b/scripts/patch.sh @@ -60,10 +60,10 @@ if [ -d "$GRLIBPATH" ]; then #CLEAN echo "CLEANING .." - rm -v $1/lib/*.sh - rm -v $1/lib/TODO - rm -v $1/lib/Makefile - rm -v $1/lib/log.txt + rm -f -v $1/lib/*.sh + rm -f -v $1/lib/TODO + rm -f -v $1/lib/Makefile + rm -f -v $1/lib/log.txt echo echo echo diff --git a/scripts/patchboards.sh b/scripts/patchboards.sh --- a/scripts/patchboards.sh +++ b/scripts/patchboards.sh @@ -42,7 +42,7 @@ echo #CLEAN echo "CLEANING .." -rm -v $1/boards/*.sh +rm -f -v $1/boards/*.sh echo echo echo diff --git a/scripts/patchdesigns.sh b/scripts/patchdesigns.sh --- a/scripts/patchdesigns.sh +++ b/scripts/patchdesigns.sh @@ -42,7 +42,7 @@ echo #CLEAN echo "CLEANING .." -rm -v $1/designs/*.sh +rm -f -v $1/designs/*.sh echo echo echo diff --git a/scripts/patchlibs.sh b/scripts/patchlibs.sh --- a/scripts/patchlibs.sh +++ b/scripts/patchlibs.sh @@ -34,7 +34,7 @@ echo #COPY echo "Remove old lib Files..." -rm -R -v $1/lib/lpp +rm -f -R -v $1/lib/lpp echo "Copy lib Files..." cp -R -v $LPP_LIBPATH/lib $1 echo @@ -56,8 +56,8 @@ echo #CLEAN echo "CLEANING .." -rm -v $1/lib/*.sh -rm -v $1/lib/GPL_HEADER +rm -f -v $1/lib/*.sh +rm -f -v $1/lib/GPL_HEADER echo echo echo diff --git a/scripts/vhdlsynPatcher.sh b/scripts/vhdlsynPatcher.sh --- a/scripts/vhdlsynPatcher.sh +++ b/scripts/vhdlsynPatcher.sh @@ -47,7 +47,7 @@ case $1 in echo "enter folder : $folders" files=$(ls $folders | grep .vhd | grep -i -v "test") echo "found $files" - rm $folders/vhdlsyn.txt + rm -f $folders/vhdlsyn.txt for file in $files do echo "$file">>$folders/vhdlsyn.txt