「verilog case範例」的推薦目錄:
- 關於verilog case範例 在 コバにゃんチャンネル Youtube 的精選貼文
- 關於verilog case範例 在 大象中醫 Youtube 的精選貼文
- 關於verilog case範例 在 大象中醫 Youtube 的最佳解答
- 關於verilog case範例 在 [問題]請教有關這個Verilog 除頻器的問題- 看板Electronics 的評價
- 關於verilog case範例 在 Verilog (4) – 算術邏輯單元ALU 的設計(作者:陳鍾誠) 的評價
- 關於verilog case範例 在 一個Verilog 程式,用於偵測按鍵輸入次數並將其顯示在Seg-7 ... 的評價
verilog case範例 在 大象中醫 Youtube 的精選貼文
verilog case範例 在 大象中醫 Youtube 的最佳解答
verilog case範例 在 Verilog (4) – 算術邏輯單元ALU 的設計(作者:陳鍾誠) 的推薦與評價
採用CASE 語法設計ALU. 其實、在Verilog 當中,我們並不需要自行設計加法器,因為Verilog 提供了高階的「+, -, *, ... ... <看更多>
verilog case範例 在 一個Verilog 程式,用於偵測按鍵輸入次數並將其顯示在Seg-7 ... 的推薦與評價
分享範例,這是一個很簡單的Verilog 程式,是2016年我在嘉義講授FPGA/Verilog HDL數位邏輯電路設計實戰時,於課堂上現場講解並實作完成,偵測按鍵輸入次數將其顯示 ... ... <看更多>
verilog case範例 在 [問題]請教有關這個Verilog 除頻器的問題- 看板Electronics 的推薦與評價
小弟最近需要做一個FPGA的i2c master
不過因為之前沒有接觸過
所以看了幾本書之後,又照著網路的幾個範例兜出架構
但是跑 semilution時一直沒辦法讓除頻過的SCL送出波型
Trigger的條件明明都有達成,該拉的狀態也都確認過了
卡了兩天左右實在抓不到方向
硬著頭皮上來問各位大神,希望能幫忙解惑哪個地方有問題
================Verilog Module
`timescale 1ns / 1ns
module SRAM_I2C(
clk_10us,reset,SDA,SCL,
bit_state,
write_down,
read_data,read_down,
Mux_EN1,Mux_EN2,Mux_EN3,Mux_EN4);
input clk_10us,reset;
inout SDA;
output reg SCL;
output reg Mux_EN1,Mux_EN2,Mux_EN3,Mux_EN4;
output reg [7:0]bit_state;
output reg write_down,read_down;
output reg [7:0]read_data;
reg isOut,tx_SDA;
reg [1:0]cnt;
reg [4:0]byte_state;
reg [7:0]write_data;
//for address use
parameter
write_address =8'b0000_0000,
write_chipaddress =8'b0000_0000,
write_bit =8'b0000_0000;
assign SDA = isOut ? tx_SDA : 1'bz;
//CLK Div for 10us
always @(posedge clk_10us or negedge reset)
begin
if(!reset)
cnt <=0;
else begin
if(cnt ==3)
cnt <=0;
else
cnt <= cnt +1'b1;
end
end
always @(posedge clk_10us or negedge reset)
begin
if(!reset)begin
tx_SDA <=0;
SCL <=0;
isOut <=0;
bit_state <=0;
byte_state <=0; //Check bytes
write_data <=0;
write_down <=1;
read_down <=0;
read_data <=0;
buf_time<=0;
Mux_EN1<=0;
Mux_EN2<=0;
Mux_EN3<=0;
Mux_EN4<=0;
end
else if(write_down==1 && read_down==0)begin//read enable
case(bit_state)
0:begin//start
if(cnt==0)begin SCL<=1;tx_SDA<=1;isOut <=1;end
if(cnt==1)begin SCL<=1;tx_SDA<=1;end
if(cnt==2)begin SCL<=1;tx_SDA<=0;end
if(cnt==3)begin SCL<=0;tx_SDA<=0;bit_state<=bit_state +1;
if(byte_state==3)write_data<=8'b10100001;else
write_data<=write_address;end
end
default:begin isOut <=0;end
endcase
end
end
endmodule
================Test Bench
`timescale 100ns / 100ns
module SRAM_I2C_TB;
// Inputs
reg clk_10us;
reg reset;
// Outputs
wire SCL;
wire [7:0] bit_state;
wire [7:0] read_data;
wire Mux_EN1;
wire Mux_EN2;
wire Mux_EN3;
wire Mux_EN4;
wire SDA;
SRAM_I2C uut (
.clk_10us(clk_10us),
.reset(reset),
.SDA(SDA),
.SCL(SCL),
.bit_state(bit_state),
.write_down(write_down),
.read_data(read_data),
.read_down(read_down),
.Mux_EN1(Mux_EN1),
.Mux_EN2(Mux_EN2),
.Mux_EN3(Mux_EN3),
.Mux_EN4(Mux_EN4)
);
//Generate CLK
reg [7:0] bit_states;
always begin
#50 clk_10us=!clk_10us;
end
initial begin
// Initialize Inputs
#0;
clk_10us = 0;
reset = 1;
#30;
reset = 0;
#5000 $finish;
end
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.110.178.209
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1535642616.A.CE6.html
※ 編輯: ghost008 (123.110.178.209), 08/30/2018 23:24:02
不過我希望第一步的Waveform要能正確輸出,再慢慢修改
※ 編輯: ghost008 (118.166.219.36), 08/31/2018 12:33:20
原來是initial的SCL=0 是Activie low,這樣轉態會讀不到
現在可以動了 非常感謝!!!
※ 編輯: ghost008 (118.166.219.36), 08/31/2018 13:17:24
... <看更多>