至于tenvalue<=(tendata((dataout>>4)&8'b0000_1111)*16+ tendata(dataout&8'b0000_1111))*129,dataout>>4表示dataout右移4位,再与上8'b0000_1111,其实是把dataout的高四位移位到低四位,比如dataout=1101_0101,得到的结果是0000_1101
4个建议:1、第二行“nest_states”命名错误。
2、状态机的迁移最好加上复位,如下:
always @ (posedge clk or negedge rst)
if (!rst)
state <= IDLE
else
state <= next_state
3、状态机的第二段可以采用组合逻辑写,always(*)是可以的,但是严禁在同一个组合逻辑always模块里同时出现<= 和=,改成都用=。
4、硬件描述语言,最好用1'b1,1'b0把位宽也描述上而不要用直接用1,0。
verilog语言是硬件电路描述语言,而这里的电路是特指数字电路的,对于模拟信号,任何FPGA或者CPLD都没办法直接处理,我以前做的数据采集板中,最前端做AD采集都是有专门的芯片来实现AD采集,这些专用芯片都是有模拟电路设计的部分。而FPGA芯片基本都是数字电路。只能处理AD芯片转换后的数字信号。。在业内专门做AD的芯片例如 Analog公司它有很多型号的专用AD数据采集芯片,比如我曾经用来和FPGA通讯的LT2208等等。你可以搜索相应的器件了解相关信息欢迎分享,转载请注明来源:内存溢出
评论列表(0条)