haddr是32位的地址信号,对地址进行译码之后产生一个AHB_TO_APB的选择信号,这个选择信号是用来选择APB系统的。
我的apb系统选择信号是0x4000_xxxx,即只要高16位是4000就选中APB系统。
高16位选中了APB系统,再根据地址信号的[15:12]这四位地址选择APB外设,这4位地址的范围是0000-1111,这就是为什么只能有16个apb外设。
选择APB外设的译码逻辑在apb_slave_mux这个文件,就是以下这段代码,DECODE4BIT就是地址的第[15:12]位。
假设地址为4000_1000,那么第[15:12]位的值为1,则选中PSEL1所代表的的外设,同理,地址若为4000_f000,则选中PSEL15所代表的外设
我的PSEL1设置为看门狗的选择信号。