From: Nicholas K. <n....@us...> - 2010-01-08 15:36:36
|
Hello-- I've been writing some code to model the collection of data from 6 serial SPI ADCs. The 6 ADCs are all being read at the same time. Each bit is collected by a separate pin of the FPGA, and is an input into a module: input [5:0] miso; I've created a register "adc_data" which is also an output of the module: output [107:0] adc_data; reg [107:0] adc_data = 0; I would like to assign the 6-bit miso input to a 6-bit range of the adc_data register. Here is a code snippet from an always block within the module: // always block triggered on the posedge of clk if(ccc >= 1) { case(ccc) 1: adc_data[5:0] <= miso; 2: adc_data[11:6] <= miso; 3: adc_data[17:12] <= miso; 4: adc_data[23:18] <= miso; 5: adc_data[29:24] <= miso; 6: adc_data[35:30] <= miso; 7: adc_data[41:36] <= miso; 8: adc_data[47:42] <= miso; 9: adc_data[53:48] <= miso; 10: adc_data[59:54] <= miso; 11: adc_data[65:60] <= miso; 12: adc_data[71:66] <= miso; 13: adc_data[77:72] <= miso; 14: adc_data[83:78] <= miso; 15: adc_data[89:84] <= miso; 16: adc_data[95:90] <= miso; 17: adc_data[101:96] <= miso; 18: adc_data[107:102] <= miso; endcase } However, this code is not valid, and the error that I receive from Icarus is: adc.v:120: syntax error adc.v:121: Syntax in assignment statement l-value. adc.v:122: syntax error adc.v:122: Syntax in assignment statement l-value. adc.v:123: syntax error adc.v:123: Syntax in assignment statement l-value. adc.v:124: syntax error adc.v:124: Syntax in assignment statement l-value. adc.v:125: syntax error adc.v:125: Syntax in assignment statement l-value. adc.v:126: syntax error adc.v:126: Syntax in assignment statement l-value. adc.v:127: syntax error adc.v:127: Syntax in assignment statement l-value. adc.v:128: syntax error adc.v:128: Syntax in assignment statement l-value. adc.v:129: syntax error adc.v:129: Syntax in assignment statement l-value. adc.v:130: syntax error adc.v:130: Syntax in assignment statement l-value. adc.v:131: syntax error adc.v:131: Syntax in assignment statement l-value. adc.v:132: syntax error adc.v:132: Syntax in assignment statement l-value. adc.v:133: syntax error adc.v:133: Syntax in assignment statement l-value. adc.v:134: syntax error adc.v:134: Syntax in assignment statement l-value. adc.v:135: syntax error adc.v:135: Syntax in assignment statement l-value. adc.v:136: syntax error adc.v:136: Syntax in assignment statement l-value. adc.v:137: syntax error adc.v:137: Syntax in assignment statement l-value. adc.v:138: syntax error adc.v:138: Syntax in assignment statement l-value. adc.v:139: syntax error adc.v:147: Syntax in assignment statement l-value. What might I be able to do to modify my code so that "miso" is assigned to a 6-bit range of "adc_data"? I have tried this alternate code: if(ccc >= 1) { if(ccc == 1) adc_data[5:0] <= miso; if(ccc == 2) adc_data[11:6] <= miso; if(ccc == 3) adc_data[17:12] <= miso; if(ccc == 4) adc_data[23:18] <= miso; if(ccc == 5) adc_data[29:24] <= miso; if(ccc == 6) adc_data[35:30] <= miso; if(ccc == 7) adc_data[41:36] <= miso; if(ccc == 8) adc_data[47:42] <= miso; if(ccc == 9) adc_data[53:48] <= miso; if(ccc == 10) adc_data[59:54] <= miso; if(ccc == 11) adc_data[65:60] <= miso; if(ccc == 12) adc_data[71:66] <= miso; if(ccc == 13) adc_data[77:72] <= miso; if(ccc == 14) adc_data[83:78] <= miso; if(ccc == 15) adc_data[89:84] <= miso; if(ccc == 16) adc_data[95:90] <= miso; if(ccc == 17) adc_data[101:96] <= miso; if(ccc == 18) adc_data[107:102] <= miso; } However, I still receive errors: adc.v:119: syntax error adc.v:119: Syntax in assignment statement l-value. adc.v:137: syntax error adc.v:142: Syntax in assignment statement l-value. Thank you, Nicholas |