VerilogHDL数字系统设计教程-Read.ppt
* 综合工具不能映射成电路,报告的错误信息: Error: electrical error due to multiple concurrent assignments to ‘counter’.错误原因分析: 两块电路的输出信号直接相连,就是多驱动或者线与逻辑,用一般工艺实现,会使灌电流过大,可能烧坏逻辑门。 要实现这样的逻辑,需要用oc门来实现,同时在输出端口应加一个上拉电阻。 练习一-(clk半周期计一次数)16进制计数器的Verilog错误表达3 * 练习一- (clk半周期计一次数)16进制计数器的Verilog正确表达 module counter_correct(clk, rst, counter); input clk, rst; output [3:0] counter; reg [3:0] counter; reg [3:0] counter1, counter2; always @(posedge clk or posedge rst) if (rst) counter1 =4b0000; else if(counter1==4b1111) counter1 = 4b0000; else counter1 = counter1+ 4b0001; always @(negedge clk or posedge rst) if (rst) counter2 =4b0000; else if(counter2==4b1111) counter2 = 4b0000; else counter2 = counter2+ 4b0001; always@(counter1 or counter2) counter=counter1+counter2; endmodule * 练习一-( clk半周期计一次数)16进制计数器的Verilog正确表达-仿真波形 分析:仿真波形满足要求,综合结果呢? * 练习一-16进制计数器的Verilog正确描述-综合结果 综合分析:综合信息没有任何Warning或者错误信息,能综合成时序电路,说明该描述方法正确。 * 练习二-设计饮料自动投币售卖机的核心控制电路 要求:简化考虑,假设饮料只有一种价格为2.5元。 硬币有0.5元和1.0元两种,考虑找零, 用Verilog描述其控制电路,并用FPGA实现。 * 练习二-饮料自动投币售卖机控制电路设计 设计步骤分解: 1,分析输入输出端口信号; 2,状态转移图; 3,根据状态转移图进行Verilog 语言描述; 4,测试代码编写,仿真; 5,FPGA实现。 * 练习二-自动售饮料机-分析输入输出端口信号 输入信号: clk,rst; 输入信号:操作开始: op_start; //定义1开始操作 输入信号:投币币值: coin_val; //定义2’b01表示0.5元; 2’b10表示1元 输入信号:取消操作指示 : cancel_flag; //定义1为取消操作 输出信号:机器是否占用: hold_ind;//定义0为不占用,可以使用 输出信号:取饮料信号: drinktk_ind;//定义1为取饮料 输出信号:找零与退币标志信号: charge_ind; //定义1为找零 输出信号:找零与退币币值: charge_val; //定义3’b001表示找0.5元; 3’b010表示找1元 // 3’b011表示找1.5元; 3’b100表示找2.0元; * 练习二-自动售饮料机-状态确定 设计步骤: 2,状态转移图 a)状态确定: S0 :初始态; S1 : 已投币0.5元; S2 :已投币1.0元; S3 :已投币1.5元; S4:已投币2.0元; S5 :已投币2.5元; S6 :已投币3.0元;
原创力文档

文档评论(0)