rd_valid = (~do_valid_o_dly) & do_valid_o;什么意思
时间: 2023-11-24 08:08:24 浏览: 76
这段代码是将两个信号按位与运算后得到的结果,其中 "~" 表示对 do_valid_o_dly 取反。具体来说,rd_valid 表示当 do_valid_o_dly 为低电平(0)且 do_valid_o 为高电平(1)时,rd_valid 为高电平(1),否则为低电平(0)。这个运算的目的是判断 do_valid_o 信号在一个时钟周期内是否发生了变化。
相关问题
Read Spd Begin... The memory on CH :1 are different! N: pre svc call fun = 0xc2000f04 -- pm-1 = 0, pm-2 = 29819750, pm-3 = 0 N: ddr fun = 0x0 -- pm = 0x29819750, pm2 = 0x0 N: parameter mcu: v0.5 Mcu Start Work ... get_clocks_value: scpi send command start: 0x10 scpi send command success get clocks = 533 MHZ pll_scp_num = 8 Lmu Freq = 1066Mhz ch = 0 parameter set ch closed! DIMM Don't Probed! ch = 1 the dimm info is from uboot... Dimm_Capacity = 8GB Mcu Channel 1 AES configuration begin... AES bypass end... TZC configuration begin... TZC bypass end... use_0x14 == 0xb0100 ctl_cfg_begin...... pi_cfg_begin...... phy_cfg_begin...... fast mode caslat = 15 wrlat = 14 tinit = 856000 r2r_diffcs_dly = 4 r2w_diffcs_dly = 5 w2r_diffcs_dly = 3 w2w_diffcs_dly = 7 r2w_samecs_dly = 4 w2r_samecs_dly = 0 r2r_samecs_dly = 0 w2w_samecs_dly = 0 ch 1 adapter_alg -- 0-0-0-0-0-0-0 rtt_wr = dis rtt_park = 80ohm ron = 34ohm val_cpudrv = 34 rtt_nom = 48ohm val_cpuodt = 48 vref_dev = 10 vrefsel = 0x45 dq_oe_timing = 0x42 rank_num_decode = 1 set phy_indep_init_mode set pi_dram_init_en set_pi_start & ctl_start...... wait init complete...... init complete done...... wait complete done...... rddqs_lat = 0x2 tdfi_phy_rdlat = 0x1f begin software ntp training... rank_num: 0 phy_write_path_lat_add =-1-1-1-1-1-1-1-1-1 phy_write_path_lat_add = 0 0 0 0 0 0 0 0 0 phy_write_path_lat_add = 1 1 1 1 1 1 1 1 1 phy_write_path_lat_add = 2 2 2 2 2 2 2 2 2 phy_write_path_lat_add = 3 3 3 3 3 3 3 3 3 phy_write_path_lat_add = 4 4 4 4 4 4 4 4 4 rank 0 wdqlvl! r2r_diffcs_dly = 4 r2w_diffcs_dly = 7 w2r_diffcs_dly = 4 w2w_diffcs_dly = 6 r2w_samecs_dly = 5 rank 0 ch 1 training fail
根据您提供的信息,似乎是内存训练过程中出现了错误。错误信息中指出了CH1内存信息不同的问题,以及训练过程中的一些参数和配置。其中,"Mcu Channel 1 AES configuration begin... AES bypass end... TZC configuration begin... TZC bypass end... use_0x14 == 0xb0100 ctl_cfg_begin"等信息表示内存控制器的一些配置和初始化过程。而"rank 0 wdqlvl! r2r_diffcs_dly = 4 r2w_diffcs_dly = 7 w2r_diffcs_dly = 4 w2w_diffcs_dly = 6 r2w_samecs_dly = 5 rank 0 ch 1 training fail"则表示在对CH1的rank0进行写数据时出现了训练失败的情况。
具体的原因可能需要进一步分析,可能与内存硬件、时序参数、内存控制器等方面有关。建议您尝试重新启动或重新插拔内存模块,并检查是否有硬件故障或不良连接的情况。同时,您也可以检查内存访问时序参数和内存控制器的配置是否正确。如果问题仍然存在,建议您查看更详细的错误信息或寻求专业的技术支持。
代码功能及详细解释void LCD_WrDat(byte data) { byte i=8; //LCD_CS=0;; GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(28));;;; asm("nop"); GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(25)));;;; asm("nop"); while(i--) { if(data&0x80){GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(26));;;;} else{GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(26)));;;;} GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(25)); asm("nop");;;; //asm("nop"); GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(25)));;;;; data<<=1; } //LCD_CS=1; } void LCD_WrCmd(byte cmd) { byte i=8; //LCD_CS=0;; GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(28)));;;;; GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(25)));;;;; //asm("nop"); while(i--) { if(cmd&0x80){GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(26));;;;;} else{GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(26)));;;;;;} GPIOA_PDOR |= GPIO_PDOR_PDO(GPIO_PIN(25));;;;; asm("nop");;;; //asm("nop"); GPIOA_PDOR &= ~(GPIO_PDOR_PDO(GPIO_PIN(25)));;;;; cmd<<=1;;;;; } //LCD_CS=1; } void LCD_Set_Pos(byte x, byte y) { LCD_WrCmd(0xb0+y); LCD_WrCmd(((x&0xf0)>>4)|0x10); LCD_WrCmd((x&0x0f)|0x01); } void LCD_Fill(byte bmp_data) { byte y,x; for(y=0;y<8;y++) { LCD_WrCmd(0xb0+y); LCD_WrCmd(0x01); LCD_WrCmd(0x10); for(x=0;x<X_WIDTH;x++) LCD_WrDat(bmp_data); } } void LCD_CLS(void) { byte y,x; for(y=0;y<8;y++) { LCD_WrCmd(0xb0+y); LCD_WrCmd(0x01); LCD_WrCmd(0x10); for(x=0;x<X_WIDTH;x++) LCD_WrDat(0); } } void LCD_DLY_ms(word ms) { word a; while(ms) { a=13350; while(a--); ms--; } return; }
这段代码是用于驱动一个LCD屏幕的函数,如下所示:
- LCD_WrDat(byte data):向LCD屏幕写入一个字节的数据。
- LCD_WrCmd(byte cmd):向LCD屏幕写入一个字节的指令。
- LCD_Set_Pos(byte x, byte y):设置LCD屏幕上的光标位置。
- LCD_Fill(byte bmp_data):将LCD屏幕填充为指定的颜色。
- LCD_CLS(void):清空LCD屏幕上的内容。
- LCD_DLY_ms(word ms):延时指定的时间(以毫秒为单位)。
这些函数的具体实现细节涉及到一些硬件操作,比如向GPIO口写入数据等等,不过这里不再赘述。如果你需要了解更多关于这些函数的实现细节,可以查看更详细的代码。
阅读全文